2016-03-28 190 views
0

以下程序来自python一书。在此代码中,计数首先设置为0,然后使用while True。在本书中,我读到零和空字符串评估为False,而其他所有值评估为True。如果是这种情况,那么程序如何执行while循环?计数不会被计数为False,因为计数设置为0?while循环并将值解释为True或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("\n\nPress the enter key to exit.") 
+3

'#while count count'True' this comment is confusing。在那个特定的行中,代码只检查“True”的值,因为它是真的,它会进入'while'。 – Lafexlos

回答

1

,病情会始终为true。现在放开while循环。

当对count > 10进行评估时,对于count = 0,它是假的,所以虽然计数为< 10,它不会突破while循环。

如果有人while count:是的,它会在第一次迭代本身来循环出为while count:相当于 - while count != 0

的情况count == 5继续对下一次迭代,循环内不打印。

2

如果评估

if count: # and count is zero 
     break 

那么肯定 - 循环会立即破裂。 但是,你正在评估这个表达式:

if count > 10: # 0 > 10 

这是False,这样你就不会在第一次循环中断。

1

如果你改变while True:while count:,你的假设确实是在代码部分while True正确

0

while循环是一个循环,它将运行一部分代码,直到条件为False。
而真被称为无限循环,因为真不是一个条件,因此不能改变。所以循环会一直运行,直到找到break指令。

在这里你有相关的回路两个特殊的元素:

  • 继续:直接进入下一次迭代
  • 突破:走出循环
1

你没有说你while count:while True:因为True总是True,你的循环将永远运行,除非内部的东西告诉它不要。这可能是一条说,break,或者它可能是一个异常提出。如果count大于10,则循环会中断。 count从零开始,但在第一次迭代中,count += 1发生并且count现在是一个。由于count不大于十,所以不会中断。由于count不等于5,它也不会继续。它所做的只是打印1。在下一次迭代中,count再次递增,同样的事情发生在if语句中。直到最终,count等于4的迭代结束。由于True仍然是True,迭代再次发生。 count递增,现在等于五。 if count > 10:声明是False,但if count == 5:True,因此该循环只是跳过print调用并返回到循环的开始。第一件事是count += 1,所以count现在等于六。接下来的几次迭代与在count五次之前发生的事情非常相似。一旦count为9的迭代发生,它会到达循环的开始处并递增count。现在count是十,循环中断。