在本节中,我们将讨论如何使用 While 循环、for 循环、函数和递归来编写 Python 程序以查找数字的各位数之和。
Python 程序:使用 While 循环查找数字的各位数之和
此程序允许用户输入任何正整数。然后,程序将给定数字分解为单独的数字,并使用 While 循环将这些单独的数字相加(求和)。
Number = int(input("Please Enter any Number: "))
Sum = 0
while(Number > 0):
Reminder = Number % 10
Sum = Sum + Reminder
Number = Number //10
print("\n Sum of the digits of Given Number = %d" %Sum)

此程序允许用户输入任何正整数,然后将该值赋给变量 Number。接下来,Python While 循环中的条件确保给定数字大于 0(表示正整数且大于 0)。
用户输入的用于此 Python 程序查找各位数之和的值为:Number = 4567 且 Sum = 0
第一次迭代
Reminder = Number%10
Reminder = 4567 % 10 = 7
Sum= Sum+ Reminder
Sum= 0 + 7 = 7
Number = Number/10
Number= 4567 / 10 = 456
程序:查找数字各位数之和的第二次迭代
从第一次Python迭代开始,Number= 456 且 Sum= 7
Reminder = 456 % 10 = 6
Sum= 7 + 6 = 13
Number= 456 / 10 = 45
第三次迭代:第三次迭代中,Number= 45 且 Sum= 13
Reminder = 45 % 10 = 5
Sum= 13 + 5 = 18
Number= 45 / 10 = 4
第四次迭代:对于第四次迭代,Number= 4 且 Sum= 18
Reminder= 4 % 10 = 4
Sum= 18 + 4 = 22
Number= 4 / 10 = 0
此时 Number= 0。因此,while 循环条件失败。
最后的打印语句将变量作为输出打印。因此,给定变量 4567 的输出是
Python 程序:使用 for 循环查找数字的各位数之和
此程序使用 for 循环范围。str() 函数将数字转换为字符串,len() 方法返回数字的总位数。这意味着 for 循环从第一位数字开始,一直遍历到最后一位数字。
num = int(input("Enter any Number = "))
tot = 0
for i in range(len(str(num))):
tot += num % 10
num //= 10
print("Total = ", tot)
您也可以尝试下面所示的for 循环方法来计算各位数之和。
num = int(input("Enter any Number = "))
tot = 0
for char in str(num):
tot += int(char)
print("Total = ", tot)

Python 程序:使用列表推导式计算各位数之和
num = int(input("Enter any Number = "))
tot = sum([int(i) for i in str(num)])
print("Total = ", tot)
使用 map 和 sum 函数
num = int(input("Enter any Number = "))
tot = sum(map(int, str(num)))
print("Total = ", tot)

Python 程序:使用函数查找数字的各位数之和
此程序中的各位数之和允许用户输入任何正整数。然后,程序将给定数字分解为单独的数字,并使用函数将这些单独的数字相加(求和)。
# using Functions
def sodCalc(val):
total = 0
while(val > 0):
Reminder = val % 10
total = total + Reminder
val = val //10
return total
val = int(input("Please Enter any Value: "))
total = sodCalc(val)
print("\n Sum of the digits of Given Value = %d" %total)

在此程序中,当编译器遇到 sodCalc(val) 行时,它会立即跳转到下面的函数。
def sodCalc(val):
Python 程序:使用递归查找数字的各位数之和
此查找数字各位数之和的程序允许用户输入任何正整数。然后,它将给定整数分解为单独的数字,并通过递归调用函数将这些单独的数字相加(求和)。
tot = 0
def calcSOD(Num):
global tot
if(Num > 0):
Reminder = Num % 10
tot = tot + Reminder
calcSOD(Num //10)
return tot
Num = int(input("Please Enter any Value: "))
tot = calcSOD(Num)
print("\n Sum of the digits = %d" %tot)
Please Enter any Value: 456
Sum of the digits = 15
在此程序中,当编译器遇到 Sum= calcSOD(Num) 行时,它会立即跳转到下面的函数。
calcSOD(Num):
在此函数中,以下语句有助于使用更新后的值递归调用函数。如果您忽略此语句,它将在完成第一行后终止。
calcSOD(Num //10)
对于此查找数字各位数之和的程序示例,Number= 4567 返回的输出为 7。
让我们来看一下If 语句,
if (Num > 0),检查 num 是否大于 0。对于递归函数,在使用函数递归之前放置一个条件非常重要。否则,我们将陷入无限执行(与无限循环相同)。
递归示例 2
这是另一种使用递归查找数字各位数之和的方法。
def digitSum(n):
if n == 0:
return 0
else:
return n % 10 +digitSum(n // 10)
num = int(input("Enter a Number = "))
print("Total = ", digitSum(num))
