虽然 True 循环在调用 return 后不会中断

While True loop doesn't break after calling return

我正在尝试编写一个函数,它将接受一个整数,将其分成数字,然后将它们相加,如果总和 >=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