有人可以告诉我为什么这个while循环在python中工作?

时间:2017-07-31 13:33:14

标签: python python-3.x while-loop

sum, Nr = 0, 12
i = Nr
while i:
    sum += i
    i -= 1
print ('The sum of all natural numbers up to (and inclusive of) ' + repr(Nr) +
' is ' + repr(sum))

所以这是一个非常简单的while循环,在python 3中返回"所有自然数的总和(包括12)是78"如预期的那样。

我感到困惑的是,为什么这种情况"而我:"在" i"没有任何比较运算符。

谢谢!

6 个答案:

答案 0 :(得分:1)

在条件语句中,输入被隐式转换为boolean,因此循环等效于

while bool(i):
    ...

bool(i)只要Truei != 0Falsei == 0,因此循环将持续到i变为零。< / p>

答案 1 :(得分:1)

似乎Python使用i not equals zero隐式替换(伪代码)。见documentation

答案 2 :(得分:1)

While期望表达式,如果它是true则运行循环。

  

while_stmt :: =“而”表达“:”套件                    [“else”“:”套房]

In [38]: bool(Nr)
Out[38]: True

答案 3 :(得分:1)

在python中,值是鸭子类型 - 这意味着解释器可以尝试将值放入您放置它的任何上下文中。除零以外的所有数字都是&#39; truthy&#39;,例如

if 3:  # True

零是假的:

if 0:  # False

答案 4 :(得分:1)

while循环期望任何条件TrueFalse。当您编写while i(假设i = 5)时,它会被评估为True,因此循环会继续,但当遇到i=0时,它会被评估为False并且循环中断。

答案 5 :(得分:0)

Python通过将其转换为布尔值来自动计算传递给它的变量的truthy值。由于i是非零正整数在Python中被认为是真的,这就是它工作的原因,直到它最终变为0被认为是假的。

>>> print(bool(3))
True
>>> print(bool(0))
False