gpt4 book ai didi

python - 在Python 2.7中通过递归添加数字来将数字压缩为一位数字的程序中得到错误的总和

转载 作者:太空宇宙 更新时间:2023-11-03 14:39:56 25 4
gpt4 key购买 nike

当我输入 12345678 时,为什么我得到的总和是 8 而不是 9?

这是我的代码:

def single_digit(a):
n=a
sum=0
while(n>0):
r=n%10
sum+=r
n=n/10
while sum>10:
single_digit(a)
return sum
a=input("\nEnter a number : ")
val=single_digit(a)
print"The number condensed to a single digit = ",val

最佳答案

这将导致无限循环。 sum 的值在内部 while 循环执行期间永远不会改变,因此 while sum > 10: 循环永远不会终止,因为一旦 sum超过 10 就无法对其进行任何修改。换句话说,一旦 sum 超过 10,控件就无法退出循环。

我会编写如下函数

def single_digit(a):

# Already in the simplest form. Nothing to do
if a < 10:
return a

num = a
sum_of_digits = 0

# Compute sum of digits of the number
while num > 0:
remainder = num % 10
sum_of_digits += remainder
num = num // 10

# Further condese the output to bring it to simple form i.e. single digit
if sum_of_digits > 10:
return single_digit(sum_of_digits)
else:
return sum_of_digits

在我看来,编写相同代码的另一种干净简洁的方法是

def single_digit(a):
sum_of_digits = sum(int(digit) for digit in str(a))
if sum_of_digits < 10:
return sum_of_digits
else:
return single_digit(sum_of_digits)

关于python - 在Python 2.7中通过递归添加数字来将数字压缩为一位数字的程序中得到错误的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46617360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com