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

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.

Nội dung chính

  • Bài toán tính tổng các chữ số trong một số
  • Cùng chuyên mục:
  • Bài toán:
  • Video tham khảo:
  • Code tham khảo:
  • Tham khảo:
  • Video liên quan

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>

int main(){

    int n;

    int sotachra;

    int s = 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.

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

Bài giải

——————– ######## ——————–

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

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

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:

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

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:
for

i

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