如何总结数字的数字?
How to sum up the number's digits?
我在 Python 中有这个函数可以帮助我找到数字的数字总和:
def sum01(n):
if n < 9 and n > 0:
return n
elif n > 9:
s = sum01((n%10)+(n//10))
return s
else:
return "ERROR, only natural numbers (N)!"
print(sum01(22224))
这个函数给出的结果是:
3
然而,我希望看到的结果是:
12
我想在不使用 while
或 for
循环且不使用列表的情况下使用递归函数获得此答案,但是,我一直未能这样做。
谢谢!
我无法添加我一直在寻找的解决方案作为答案,所以它在问题中。
`def sum01(n):
x = 0
if n < 9 and n > 0:
return n
elif n > 9:
x = (n%10) + x
s = sum01(n//10)
return s + x
else:
return "ERROR, only natural numbers (N)!"`
这不是最好或最高效的解决方案,但如果您只需要快速完成它,它会相当短:
sum_of_digits = 0
for digit in str(22224):
sum_of_digits += int(digit)
如果你想给某人留下深刻印象,你也可以使用这个“一条线”:
from functools import reduce
reduce(lambda a, b: int(a) + int(b), str(22224))
但是@ekhumoro 解决方案更好(见评论)。
无论如何,这有点像递归地模仿 reduce,不涉及循环:
def sum_of_digits(sum, digits):
sum += int(digits.pop())
if len(digits) == 0:
return sum
return sum_of_digits(sum, digits)
print(sum_of_digits(0, list(str(22224))))
我想这更干净一些:
def sum_of_digits(sum, number):
if number == "":
return sum
digits = str(number)
return sum_of_digits(sum + int(digits[0]), digits[1:])
print(sum_of_digits(0, 22224))
我在 Python 中有这个函数可以帮助我找到数字的数字总和:
def sum01(n):
if n < 9 and n > 0:
return n
elif n > 9:
s = sum01((n%10)+(n//10))
return s
else:
return "ERROR, only natural numbers (N)!"
print(sum01(22224))
这个函数给出的结果是:
3
然而,我希望看到的结果是:
12
我想在不使用 while
或 for
循环且不使用列表的情况下使用递归函数获得此答案,但是,我一直未能这样做。
谢谢!
我无法添加我一直在寻找的解决方案作为答案,所以它在问题中。
`def sum01(n):
x = 0
if n < 9 and n > 0:
return n
elif n > 9:
x = (n%10) + x
s = sum01(n//10)
return s + x
else:
return "ERROR, only natural numbers (N)!"`
这不是最好或最高效的解决方案,但如果您只需要快速完成它,它会相当短:
sum_of_digits = 0
for digit in str(22224):
sum_of_digits += int(digit)
如果你想给某人留下深刻印象,你也可以使用这个“一条线”:
from functools import reduce
reduce(lambda a, b: int(a) + int(b), str(22224))
但是@ekhumoro 解决方案更好(见评论)。
无论如何,这有点像递归地模仿 reduce,不涉及循环:
def sum_of_digits(sum, digits):
sum += int(digits.pop())
if len(digits) == 0:
return sum
return sum_of_digits(sum, digits)
print(sum_of_digits(0, list(str(22224))))
我想这更干净一些:
def sum_of_digits(sum, number):
if number == "":
return sum
digits = str(number)
return sum_of_digits(sum + int(digits[0]), digits[1:])
print(sum_of_digits(0, 22224))