下面的程序来自python的一本书。在该代码中,count首先设置为0,然后使用while True
。在这本书中,我读到零和空字符串被评估为False,而所有其他值都被评估为True。如果是这种情况,那么程序如何执行while循环?当count设置为0时,该count不是评估为False吗?
有人能解释一下吗?
# Finicky Counter
# Demonstrates the break and continue statements
count = 0
while True: # while count is True
count += 1
# end loop if count greater than 10
if count > 10:
break
# skip 5
if count == 5:
continue
print(count)
input("nnPress the enter key to exit.")
如果您评估
if count: # and count is zero
break
那么肯定-循环会立即中断。但您正在评估这个表达式:
if count > 10: # 0 > 10
它是False
,所以您不会在第一次迭代时中断。
在代码部分while True
中,条件将始终计算为true。现在让我们进入while循环。
当评估count > 10
时,对于count=0,它是假的,因此当count<0时;10,它不会在while循环中爆发。
如果是while count:
是的,它会在第一次迭代中退出循环,因为while count:
等效于-while count != 0
对于条件count == 5
,它继续到下一次迭代,并且不在循环内打印。
如果将while True:
更改为while count:
,则您的假设确实是正确的
你没有说while count:
你说while True:
由于True
总是True
,除非告诉不要这样做,否则你的循环将永远运行。这可能是一行说break
,也可能是引发的异常。如果count
大于10
,则循环将中断。count
从零开始,但在第一次迭代中,count += 1
发生,count
现在为一。由于count
不大于10,因此它不会断裂。由于count
不等于5
,所以它也不继续。它所做的只是打印1
。在下一次迭代中,count
再次递增,if
语句也会发生同样的情况。直到最终,count
等于4
的迭代结束,它都是一样的。由于True
仍然是True
,所以迭代再次发生。count
递增,现在等于5。if count > 10:
语句是False
,但if count == 5:
是True
,因此循环只是跳过print
调用并返回到循环的开头。它得到的第一个值是count += 1
,所以count
现在等于6。接下来的几次迭代与count
五次之前的情况非常相似。一旦count
为9的迭代发生,它就到达循环的开始并递增count
。现在count
是10,循环中断。
while循环是一个循环,它将运行一部分代码,直到条件为False
而True被称为无限循环,因为True不是条件,因此不能更改。因此,循环将一直运行,直到找到break指令为止。
这里有两个与循环相关的特殊元素:
- continue:直接进入下一个迭代
- 突破:跳出循环