Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách tính tổng tất cả các chữ số của một số cho trước. Chúng ta sẽ tìm hiểu tất cả các phương pháp có thể để thực hiện chương trình này. Chúng tôi sẽ sử dụng các hàm đệ quy, vòng lặp và chuyển đổi kiểu cho chương trình này bằng Python
Trong chuyển đổi kiểu, chúng tôi sẽ chuyển đổi số nguyên thành chuỗi để nhận từng chữ số của số. Trước khi tiến về phía trước, bạn phải biết chuỗi là gì. Hãy xem bài viết này để biết về Chuỗi trong Python
Chương trình sẽ lấy một số nguyên làm đầu vào từ người dùng và in tổng các chữ số của nó. Ví dụ,
Đầu vào- 4321
Đầu ra- 10
Đầu vào- 821
Đầu ra- 11
Dưới đây là ba cách tiếp cận, bạn có thể sử dụng để in tổng các chữ số
- Sử dụng str[] và int[]
- Sử dụng phép lặp
- Sử dụng đệ quy
Chương trình Python 1. Sử dụng phương thức str[] và int[]
Trước khi bắt đầu với chương trình, trước tiên hãy tìm hiểu về các phương thức str[] và int[]. Chúng là các hàm tích hợp trong Thư viện Python
Phương thức str[] chuyển đổi và trả về đối tượng thành chuỗi và phương thức int[] chuyển đổi đối tượng thành số nguyên
thuật toán
Bước 1- Lấy đầu vào từ người dùng
Bước 2- Khai báo biến lưu tổng
Bước 3- Chuyển đổi số thành chuỗi
Bước 4- Chạy vòng lặp cho từng chữ số của một số
Bước 5- Chuyển đổi chữ số thành số nguyên và thêm nó vào tổng
Bước 6- In tổng
Chương trình Python
Nhìn vào chương trình để hiểu việc thực hiện phương pháp nêu trên
n=int[input["Enter number"]]
sum=0
for digit in str[n]:
sum=sum+int[digit]
print["Sum of digits",sum]
Nhập số23451
Tổng các chữ số 15
Chương trình Python 2. Sử dụng phép lặp
Trong chương trình này, chúng ta sẽ sử dụng các câu lệnh lặp để tính tổng. Các vòng lặp được sử dụng để thực thi lặp đi lặp lại một đoạn mã cụ thể. Vòng lặp for, while và do-while là một số câu lệnh lặp
Để lấy chữ số ngoài cùng bên phải của một số chia cho 10 cho đến khi số đó trở thành 0. Phần còn lại cuối cùng sẽ là chữ số ngoài cùng bên phải. Để nhận lời nhắc sử dụng toán tử còn lại "%". Để nhận được tất cả các chữ số của một số chia thương số thu được cho 10. Để có được một thương số nguyên mỗi lần sử dụng "//"
thuật toán
Bước 1- Định nghĩa hàm Sum với tham số n
Bước 2- Khai báo biến sum để lưu tổng các chữ số
Bước 3- Xác định một vòng lặp sẽ chạy cho đến khi n khác 0
Bước 4- Thêm biến tổng vào phần còn lại được trả về bởi [n%10]
Bước 5- Cập nhật n thành n//10
Bước 6- Nhận đầu vào của người dùng
Bước 7- Gọi hàm Sum và truyền đầu vào dưới dạng tham số
Bước 8- In giá trị trả về của Sum
Chương trình Python
Nhìn vào chương trình để hiểu việc thực hiện phương pháp nêu trên
def Sum[n]:
sum = 0
while [n != 0]:
sum = sum + [n % 10]
n = n//10
return sum
n=int[input["Enter number"]]
print["Sum of digits",Sum[n]]
Nhập số342
Tổng các chữ số 9
Chương trình Python 3. Sử dụng đệ quy
Phương pháp trên cũng có thể được thực hiện bằng cách xác định hàm đệ quy. Các hàm đệ quy là những hàm gọi chính nó bên trong định nghĩa hàm. Sử dụng đệ quy sẽ loại bỏ vòng lặp trong mã
Thực hiện theo thuật toán để được giải thích chi tiết về hoạt động của chương trình
thuật toán
Bước 1- Xác định hàm sum_of_digits với tham số n để tính tổng
Bước 2- Kiểm tra xem n có nhỏ hơn 10 không, nếu đúng trả về n
Bước 3- Mặt khác, chia số cho 10 và tính phần còn lại [n%10]
Bước 4- Gọi hàm đệ quy và chuyển [n//10] làm tham số
Bước 5- Trả về tổng của phần còn lại và giá trị được hàm trả về
Bước 6- Lấy đầu vào từ người dùng
Bước 7- Gọi hàm sum_of_digits và truyền đầu vào dưới dạng tham số
Chương trình Python
Nhìn vào chương trình để hiểu việc thực hiện phương pháp nêu trên
def sum_of_digit[n]:
if n< 10:
return n
else:
return n%10 + sum_of_digit[n//10]
number = int[input["Enter number: "]]
# Function call and output display
print["Sum of digit is",sum_of_digit[number]]
Nhập số. 5421
Tổng các chữ số là 12
Phần kết luận
Chúng ta đã học được ba cách khác nhau để tính tổng các chữ số của một số trong Python. Chúng ta có thể sử dụng các phương thức của lớp str trong Python như str[] và int[] để chuyển đổi một số nguyên thành chuỗi và ngược lại
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;7__
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;0
1506
1507
1508
1509
1508
1511
1508
1513
1508
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;98
1516
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;7____904
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;7
1506
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;7____908
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;7____524
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;26____932
1532
1528
Python3
1529
1530
1531
1532
1533
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;7_______535____536
1537
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;41
1508
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;41
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;7____346
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;17
1544
1545
156
1535
1548
1537
1550
156
1552____548
1537
1507
156
154
1558
1559
_______560____561
1560
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;62
156
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;67
1566
1560
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;71
156
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;7____571
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;7____936
1535
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;7
1576
1577
1535
1537
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;98
1508
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;41
1583
1584
1537
1586
1507
1508
1509
1508
1511
1508
1513
1508
Syntax1 | Syntax2 ---------------------------- goto label; | label: . | . . | . . | . label: | goto label;98
1596