【问题标题】:while loop still loops one more time even though condition is false即使条件为假,while 循环仍会再循环一次
【发布时间】:2019-05-07 13:54:26
【问题描述】:

我的代码似乎永远卡在这个 while 循环中:

array = []
b = 1
while b != 0:
    b = int(input("please enter whole numbers "))
    array += [b]
print (array)     

代码的意思是将用户输入放入一个数组中,当用户输入0时停止。我不知道为什么即使条件为假,循环也能继续执行代码。我以为只要条件为假,python就会停在那里!

当我不希望 0 出现在数组中时,我不断将它作为一个元素。

【问题讨论】:

  • While 循环仅在程序返回到循环顶部以检查您设置的条件时停止(您使用了b!=0)。在它回到顶部之前,它必须遍历所有语句到底部,在你的情况下包括array += [b]。这意味着b 将是最后一次0。

标签: python loops while-loop


【解决方案1】:

为了不使用break,我稍微修改了magamongo的回答,但你也可以像quamrana的回答一样使用它:

array = []
b = 1
while b != 0:
    b = int(input("please enter whole numbers "))
    array += [b]
array = array[:-1]
print(array)

【讨论】:

  • 谢谢,是的,我想过使用 break 但我的老师还没有教过它,使用像你在这里所做的基本工具更有意义。我从来没有想到这一点。再次感谢您。
  • 不客气。当循环结束之前有很多操作时,也许休息是有用的。但是如果你有相同的计算,我认为阻止 break 语句会更好,因为它们会破坏执行流程。
【解决方案2】:

我认为您可以使用自己的退出条件,而不是依赖 while 语句本身停止:

array = []

while True:   # never exit here
    b = int(input("please enter whole numbers "))
    if b == 0:
        break    # exit the loop here
    array += [b]
print (array)   

【讨论】:

  • 非常感谢你这么快回复我,你帮了我很大的忙
【解决方案3】:

“break”可以帮助你做到这一点。

array=[1]
while array[-1] != 0:
  b = int(input("please enter a whole number"))
  array += [b]
  if array[-1] == 0:
    print(array[1:-1])
    break

希望这会有所帮助:)

【讨论】:

  • 您似乎在数组的开头添加了一个1和在数组的末尾添加了一个0。 OP 当然不希望最后出现0。
  • OK,然后用“print(array[1:-1])”代替“print(array)”
猜你喜欢
  • 1970-01-01
  • 2014-03-30
  • 2021-02-07
  • 1970-01-01
  • 1970-01-01
  • 2020-08-19
  • 2019-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多