Tính tổng các chữ số python



Đề bài

Bài tập Python: Viết chương trình tính tổng của các chữ số của môt số nguyên n trong Python. Số nguyên dương n được nhập từ bàn phím. Ví dụ:

Tính tổng các chữ số python



Lời giải

Với bài toán này chúng tôi sử dụng phép chia lấy phần dư và chia lấy phần nguyên để giải quyết.

Ví dụ tổng các chữ số của 1234 sẽ là: (1234 % 10) + (123 % 10) + (12 % 10) + (1 % 10) = 4 + 3 + 2 + 1 = 10.

""""
 * Tính tổng của các chữ số của một số nguyên dương n
 *
 * @param n: số nguyên dương
 * @return
"""
def totalDigitsOfNumber(n):
    total = 0;
    while (n > 0):
        total = total + n % 10;
        n = int(n / 10);
    return total;

n = int(input("Nhập số nguyên dương n = "));
print("Tổng các chữ số của", n , "là", totalDigitsOfNumber(n));

Kết quả:

Nhập số nguyên dương n = 1234
Tổng các chữ số của 1234 là 10



Viết chương trình Tính tổng các chữ số trong một số n ? Đây là một bài tập khá hay :D, tuy nó cũng khá đơn giản thôi, nhưng cái mà nó mang lại cho chúng ta không hề giản đơn như chúng  ta nghĩ là đơn giản :v. Vậy thì bài tập này cho chúng ta những gì ? Hãy cũng mình tìm hiểu trong bài viết này nhé, mình xin được bắt đầu bài viết.

Bài toán tính tổng các chữ số trong một số

Đề bài: Trên ngôn ngữ lập trình C , hãy nhập vào một số nguyên dương n. Hãy viết chương trình Tính tổng các chữ số của n , in kết quả ra màn hình.

Như vậy, bài toán này sẽ giúp các bạn học được các kiến thức cơ bản nhất về nhập xuất trong lập trình C. Cách sử dụng vòng lặp toán tử chia dư, chia nguyên trong lập trình C.

Xác định input output:

input: Nhập n = 12345

output: s = 1 + 2 + 3 + 4 + 5

Ý tưởng :

  1. Khởi tạo một biến tachso để tách các chữ số của n bằng toán tử chia dư và một biến s để tính tổng bằng các số đã tách. Song song với tách số chúng ta sử dụng toán tử chia nguyên để xóa chữ số cuối của n
  2. Đặt chúng vào một vòng lặp for và chạy
  3. Đến đây thì f11 thôi 😀

Ok chỉ vậy thôi, bây giờ mình sẽ code và chú thích chi tiết ngay ở dưới.

#include<conio.h>

#include<stdio.h>

intmain(){

    intn;

    int sotachra;

    ints=0;

    printf("Nhap n: ");

    scanf("%d",&n);

    for(;n!=0;){

        sotachra=n%10;

        s +=sotachra;

        n/=10;

    }    

    printf("%d",s);

}

Kết quả:

Okê xong rồi đấy :D, Vậy là mình đã giải quyết xong bài toán Tính tổng các chữ số trong một số n . Mình rất vui vì bạn đã tham khảo bài viết này của mình. Chúc bạn học tập thật tốt và từng bước từ newbie đi lên coder và trở thành developer hihi. Hãy nhớ là nền vững thì mới xây cao. Bọn mình và sếp sẽ luôn đồng hành cùng các bạn hehe. Các bạn cứ để lại bình luận nếu thắc mắc,  mình xin được kết thúc bài viết tại đây.

Xem thêm bài viết về C/C++ tại đây

Hãy sử dụng kiến thức vòng lặp while hoặc vòng lặp for của Python để giải bài tập sau:

Tính tổng S(n) = 1 + 2 + 3 + … + n.

Đây là chương trinh tính tổng từ 1 đến n với n được nhập từ bàn phím, sử dụng ngôn ngữ Python để giải.

Bài giải

-------------------- ######## --------------------

Với bài này thì ta chỉ cần sử dụng hai thao tác như sau:

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

  • Tạo một biến sum để lưu trữ tổng của dãy số đó
  • Sử dụng vòng lặp để lặp qua từ 1 đến n

Ta sẽ sử dụng hàm input để yêu cầu người dùng nhập vào số n.

Sử dụng vòng lặp for:

tong = 0 n = 1 print("-- HỌC PYTHON TẠI FREETUTS.NET --- ") print("Tính tổng S(n) = 1 + 2 + 3 + … + n") # Nhập dữ liệu print("hãy nhập vào số n: ") n = int(input()) # Tính tổng for i in range(0, n+1): tong += i # In kết quả print ("Tổng là: ", tong)

Sử dụng vòng lặp while:

Bài viết này được đăng tại [free tuts .net]

tong = 0 n = 1 i = 1 print("-- HỌC PYTHON TẠI FREETUTS.NET --- ") print("Tính tổng S(n) = 1 + 2 + 3 + … + n") # Nhập dữ liệu print("hãy nhập vào số n: ") n = int(input()) # Tính tổng while i <= n : tong += i i += 1 # In kết quả print ("Tổng là: ", tong)

Chạy cả hai chương trình và nhập n = 4 thì sẽ có kết quả như sau:

Danh sách bài tập Python cơ bản

Cùng chuyên mục:

Bài toán:

Hãy tính tổng các số từ 1 đến N.

Video tham khảo:

Code tham khảo:

Cách thức xử lý:Tạo một biến tên tong để chứa tổng, ban đầu cho tong=0, dùng 1 vòng lặp for cho biến chạy i chạy từ 1 đến N rồi cộng dồn vào biến tong.

Dưới đây là một solution tham khảo:

#Bài toán: Tính tổng các số từ 1->N #Tiến hành xử lý: tong=0 N=int(input("Mời bạn nhập 1 số nguyên dương N: ")) while not N>0: N=int(input("Mời bạn nhập lại số nguyên dương N: ")) #Tính tổng: fori in range(1,N+1): tong+=i #Kết luận: print("Tổng các số từ 1 ->",N,"là:",tong)

Tham khảo:

  • Tính tổng nghịch đảo các số từ 1-N
  • In ra giá trị từ 1-100 và từ 100 đến 1
  • Hoán vị giá trị 2 biến cho nhau
  • Random trong Python

Bạn có thể làm điều đó hoàn toàn bằng số nguyên, và nó sẽ hiệu quả nhất:

def sum_digits(n): s = 0 while n: s += n % 10 n //= 10 return s

hoặc với divmod:

def sum_digits2(n): s = 0 while n: n, remainder = divmod(n, 10) s += remainder return s

Nhưng cả hai dòng bạn đăng đều ổn.

Thậm chí nhanh hơn là phiên bản không có bài tập tăng cường:

def sum_digits3(n): r = 0 while n: r, n = r + n % 10, n // 10 return r > %timeit sum_digits(n) 1000000 loops, best of 3: 574 ns per loop > %timeit sum_digits2(n) 1000000 loops, best of 3: 716 ns per loop > %timeit sum_digits3(n) 1000000 loops, best of 3: 479 ns per loop > %timeit sum(map(int, str(n))) 1000000 loops, best of 3: 1.42 us per loop > %timeit sum([int(digit) for digit in str(n)]) 100000 loops, best of 3: 1.52 us per loop > %timeit sum(int(digit) for digit in str(n)) 100000 loops, best of 3: 2.04 us per loop