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循环检查python中的字谜

While(1) 循环在 IOS 的后台不工作

Python在While循环中继续缩进

带有while循环的Recvall在python中的两个设备之间不起作用

在 foreach 循环中的 if 语句中的 while 循环...无法正常工作

试图在另一个while循环中获得一个while循环,但它不能一起工作[重复]