while 循环在 python 中不能正常工作
Posted
技术标签:
【中文标题】while 循环在 python 中不能正常工作【英文标题】:while loop won't works right in python 【发布时间】:2022-01-16 05:07:12 【问题描述】:我编写了这段代码来总结一个大于 10 的数字的数字,直到结果只有一个数字,当我尝试编译它时,它甚至不会给我一个错误,直到我停止它。我想知道是什么问题。
number = input()
#sumed_up_digits = result
result = 0
while len(number) != 1:
for i in number:
int_i = int(i)
result = result + int_i
number = str(result)
print(result)
【问题讨论】:
尝试使用调试器来捕获错误。 IMO,结果是一个增加的值,而不是一个减少的值。因此,如果它的初始值长于 1 个字符,它将永远不会停止。 尝试将 result = 0 放在 while 和 for 之间,而不是在 while 将 sum = 0 之前放入 result,在 for 之后将结果添加到 sum,然后在末尾打印 sum。你写的结果是累积的,它将包括所有以前的总和,这些总和会继续增加。 问题是当我们输入一个大于10的数字时,我们不会得到一个数字! 所以while循环变成了无限循环:) 【参考方案1】:试试下面的代码:
s=input()
n=len(s)
result=0
for i in range(n-1):
result=result+int(s[i])
print(result)
这个 for 循环从给定字符串的第 0 到第 (n-2) 个索引运行,因此最后一个数字不会添加到结果中。与 1245 一样,它会将 1,2 和 4 添加到结果中,但不是 5。
【讨论】:
【参考方案2】:结果是累积的,包括以前的总和。 试试:
number = input()
#sumed_up_digits = sum
sum = 0
while len(number) != 1:
result = 0
for i in number:
int_i = int(i)
result = result + int_i
sum = sum + result
number = str(result)
print(sum)
【讨论】:
【参考方案3】:你可以这样做:
number = input()
if len(number) <= 1:
print(0)
while len(number) > 1:
number = str(sum(int(i) for i in number))
print(int(number))
当然,您需要检查初始输入 number
是否由数字组成...
【讨论】:
【参考方案4】:问题是数字没有被缩短,因此永远不会达到循环停止的条件。
number = input()
result = 0
while len(number) != 1:
# set digit to last number
digit = int(number) % 10
result += digit
number = number[:-1]
print(result)
【讨论】:
以上是关于while 循环在 python 中不能正常工作的主要内容,如果未能解决你的问题,请参考以下文章
带有while循环的Recvall在python中的两个设备之间不起作用