写一个函数,求一个非负整数的各个数字之和。例如,43257的各个数字之和喂4+3+2+5+7。在主程序中调用该函数并输出结果
def sum_of_digits(n):
sum = 0
while n > 0:
digit = n % 10
sum += digit
n //= 10
return sum
n = 43257
digit_sum = sum_of_digits(n)
print("数字 %d 的各个数字之和为 %d" % (n, digit_sum))
def sum_of_digits(num):
"""
求一个非负整数的各个数字之和
"""
assert num >= 0, "非负整数输入错误!"
# 将整数转换为字符串,逐个字符求和
sum_digit = 0
for digit in str(num):
sum_digit += int(digit)
return sum_digit
num = 43257
digit_sum = sum_of_digits(num)
print("{} 的各个数字之和是:{}".format(num, digit_sum))
def sum_(data):
if data <= 0:
return 0
return data % 10 + sum_(data // 10)
if __name__ == '__main__':
res = sum_(43257)
print(res)
a = []
for i in range(1, 1000):
s = 0
for j in range(1, i):
if i % j == 0 and j < i:
s += j
if s == i:
print(i)
a.append(i)
print("1000 以内完全数:%s" % a)
解决方案:
可以使用Python中的字符串操作,将输入的数字转换成字符串,然后将数字逐个取出并转换成整数,最后求和即可。
代码如下:
def sum_digits(num): """ 计算非负整数数字之和 """ # 将数字转换为字符串 num_str = str(num) # 初始化数字之和 result = 0 # 逐个取出数字并求和 for digit in num_str: result += int(digit) # 返回数字之和 return result
num = 43257 result = sum_digits(num) print(result)
输出:21
在这里,我们定义了一个名为sum_digits的函数,它接受一个非负整数作为参数,并返回其各个数字之和。首先,我们将数字转换为字符串形式,以便于逐个取出每一位数字。然后,我们初始化数字之和为0,并使用for循环遍历字符串中的每一个数字,并将其转换为整数后加到数字之和中。最后,函数返回求和结果。在主程序中,我们测试了函数的正确性,将43257作为参数传入该函数,并将计算结果输出到屏幕上,输出结果为21。
需要注意的是,在sum_digits函数的输入参数num为非负整数时,函数的功能是正确的。但是,当输入的是负数时,函数的结果就不正确了。因此,如果需要对该函数扩展,以支持负数的求和操作,需要对其进行修改。