我设置了一个算法,它对一个数字的数字求和,但我无法达到个位数。它只工作一步。
例如:
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)
干得好:
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)
归档时间: |
|
查看次数: |
1665 次 |
最近记录: |