数字总和直到达到个位数

hor*_*dus 3 python

我设置了一个算法,它对一个数字的数字求和,但我无法达到个位数。它只工作一步。

例如:

a=2, b=8
a^b=256 = 6+5+2 = 13
Run Code Online (Sandbox Code Playgroud)

但我想达到个位数,例如:

a^b=256 = 6+5+2 = 13 = 3+1 = 4

你可以在下面看到我的代码。

a = int(input("Enter a value"))
b = int("Enter second value")

number = pow(a, b)
sum= 0
while float(number) / 10 >= .1:

    m = number % 10
    sum += m
    number = number // 10

    if float(number) / 10 > .1:
       print(m, end=" + ")
    else:
       print(m, "=", sum)
Run Code Online (Sandbox Code Playgroud)

Chr*_*per 5

干得好:

n = 256
while n > 9:
    n = sum(int(i) for i in str(n))

print(n)
Run Code Online (Sandbox Code Playgroud)

发生什么了? str(n)转换n为字符串,python 中的字符串可以迭代,因此我们可以逐位访问。我们在生成器中执行此操作,将每个数字转换回整数,int(i) for i in str(n),我们用于sum对生成器中的元素求和。我们重复这个过程,直到 n 是一位数。

添加了一个明确给出计算的解决方案:

def sum_dig(n):
    _sum = sum(int(i) for i in str(n))
    explained = "+".join(list(str(n)))
    return _sum, explained
n = 256
s = ""
while n > 10:
    n, e = sum_dig(n)
    s+= f'{e}=' 

s += str(n)
print(s)
Run Code Online (Sandbox Code Playgroud)

产量:

2+5+6=1+3=4
Run Code Online (Sandbox Code Playgroud)