我正试图编写一个函数,它将取一个整数,将其划分为数字,求和,如果和为>10,循环这个过程,直到我得到一个个位数的和。有人能告诉我为什么我的"while True"循环没有打破吗:
def digital_root(n):
while True:
digits = []
for i in str(n):
digits.append(int(i))
if sum(digits) < 10:
return sum(digits)
我并不是真的在寻找最佳解决方案,我只是想知道为什么这不起作用。
您应该在每次迭代中更新n
的值,如下所示:
def digital_root(n):
while True:
digits = []
for i in str(n):
digits.append(int(i))
n = sum(digits) # add
if n < 10:
return n