while循环并将值解释为True或False

时间:2016-03-28 11:27:58

标签: python

以下程序来自python一书。在此代码中,count首先设置为0,然后使用ls -l /etc/apache2/sites-enabled/ lrwxrwxrwx 1 root root 26 Mär 7 09:18 000-default -> ../sites-available/default lrwxrwxrwx 1 root root 38 Mär 28 03:56 domain-1.de -> ../sites-available/domain-1.de lrwxrwxrwx 1 root root 39 Mär 28 03:56 domain-2.de -> ../sites-available/domain-2.de 。在本书中,我读到零和空字符串被评估为False,而所有其他值被评估为True。如果是这种情况,那么程序如何执行while循环?当计数设置为0时,不会将计数评估为False

有人可以解释一下吗?

<VirtualHost *:80>
    ServerName domain-2.de
    ServerAlias www.domain-2.de
    DocumentRoot /var/www/domain-2.de
</VirtualHost>

5 个答案:

答案 0 :(得分:2)

如果您评估

if count: # and count is zero
       break

然后确定 - 循环将立即中断。 但是你正在评估这个表达式:

if count > 10: # 0 > 10

False,因此您不会在第一次迭代时中断。

答案 1 :(得分:1)

如果您将super().some_method(arg1, arg2)更改为while True:,那么您的假设确实是正确的

答案 2 :(得分:1)

在代码部分while True中,条件将始终评估为true。现在让我们进入while循环。

当评估count > 10时,对于count = 0,它是假的,所以当count&lt; 10,它不会突破while循环。

如果是while count:是的,它会在第一次迭代中脱离循环,因为while count:相当于 - while count != 0

对于条件count == 5,它会继续下一次迭代,并且不会在循环内打印。

答案 3 :(得分:1)

你没有说while count:你说while True:因为True总是True,你的循环将永远运行,除非内部的东西告诉它不要。这可能是一行break,或者可能是一个例外。如果count大于10,您的循环就会中断。 count从零开始,但在第一次迭代时,count += 1发生,count现在为1。由于count不大于10,因此不会中断。由于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为10,循环中断。

答案 4 :(得分:0)

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

这里有两个与循环相关的特殊元素:

  • 继续:直接进入下一次迭代
  • 休息:走出循环