我想取一个数字并打印其数字的总和,如果总和大于10,则再次求和该数字的总和(依此类推)
Example: 621
6+2+1=9
print 9
Example:743
7+4+3=14
1+4=5
print 5
这是我到目前为止所拥有的:
num=int(input("what's the number?"))
def oneNum(num):
numLen=len(str(num))
tot=0
if num>=10:
for i in range(numLen):
i=i+1
tot=num%10+tot
print(tot)
num=num//10
if tot>=10:
num=tot
oneNum(num)
else:
return(tot)
print(tot)
答案 0 :(得分:1)
这被称为数字的“数字根”-取数字的总和,如果该数字大于或等于10,请继续这样做,直到变得足够小为止。
通常我会修复您的代码,但是由于我昨天刚写了一个这样的方法,所以我将其粘贴在这里:
def digital_root(num):
root = sum(int(d) for d in str(num))
while root >= 10:
root = sum(int(d) for d in str(root))
return root
如您所见,最简单的方法是将整数转换为字符串,然后遍历每个字符,将其重新转换为一个数字,然后将它们加起来。
这是一个递归版本(尽管由于函数调用的开销,实际上它的效率会稍差一些):
def digital_root(num):
root = sum(int(d) for d in str(num))
return root if root < 10 else digital_root(root)