我设置了一种算法,该算法将数字的总和加起来,但是直到一位数字我都无法实现。它只工作一步。
例如:
a=2, b=8
a^b=256 = 6+5+2 = 13
但是我想达到一位数,例如:
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)
答案 0 :(得分:4)
您在这里:
n = 256
while n > 9:
n = sum(int(i) for i in str(n))
print(n)
那是怎么回事? 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)
产量:
2+5+6=1+3=4
答案 1 :(得分:1)
这将产生要求OP格式的输出:
a = int(input("Enter a value: "))
b = int(input("Enter second value: "))
n = pow(a, b)
while n >= 10:
nums = [i for i in str(n)]
op = "+".join(nums)
n = eval(op)
print("{}={}".format(op, n))
"+".join(nums)
-为输出打印创建求和字符串。eval(op)
来计算总和,该{@ 1}适用于字符串(内置函数)-存储在n
中。Enter a value: 2
Enter second value: 8
2+5+6=13
1+3=4
Enter a value: 2
Enter second value: 6
6+4=10
1+0=1
Enter a value: 2
Enter second value: 50
1+1+2+5+8+9+9+9+0+6+8+4+2+6+2+4=76
7+6=13
1+3=4
答案 2 :(得分:1)
您可以尝试一下。
a = int(input("Enter a value"))
b = int(input("Enter second value"))
number = pow(a, b)
result = str(a)+'^'+str(b) + ' = ' + str(number)
while number > 9:
digit_sum = sum(map(int, str(number)))
result += ' = ' + '+'.join(str(number)) + ' = ' + str(digit_sum)
number = digit_sum
print ( result )
对于a = 2,b = 8的结果:
2^8 = 256 = 2+5+6 = 13 = 1+3 = 4
答案 3 :(得分:0)
sol = 0
if (a^b)%9==0:
sol = 9
else:
sol = (a^b)%9