我的程序没有显示结果?它必须显示其内部的总和

时间:2019-03-16 10:40:35

标签: python

我想取一个数字并打印其数字的总和,如果总和大于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)

1 个答案:

答案 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)