为什么这个python while循环没有结束?

时间:2019-09-16 11:45:01

标签: python while-loop

我想知道为什么这段代码似乎无限循环吗?逻辑while not False = while True和True表示错误的100 < 0,因此应改为执行print语句,对吗?为什么它会卡在循环中?。

num = 100
while not False:
    if num < 0:
        break
print('num is: ' + str(num))

3 个答案:

答案 0 :(得分:0)

您的print语句在while循环之外。您必须在else中使用if子句。

num = 100
while not False:
    if num < 0:
        break
    else:
        print('num is: ' + str(num))
        # Do something with num to decrease it, else it will stay a forever loop.

答案 1 :(得分:0)

while语句应带有条件。有条件的True(或由于您的原因not False)总是求值为True,因此循环永远不会结束。

if块永远不会执行,因为num < 0永远不会求值为True。您是否要在while块的每次迭代中将num减1?如果是这样,请在num = num - 1块中添加一个while

num = 100
while not False:
    if num < 0:
        break
    num = num - 1
print('num is: ' + str(num))

答案 2 :(得分:0)

简短的回答:由于以下情况不成立,因此不会评估if子句的内容,因此不会执行break

if num < 0:

实际上正在运行的是以下内容:

num = 100
while not False:
    if num < 0: #False
        #what is here is unimportant, since it will never run anyway.

...或者为了简化它,这就是您正在做的事情:

while true:
    if false:
        break