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"没有任何比较运算符。
谢谢!
答案 0 :(得分:1)
在条件语句中,输入被隐式转换为boolean,因此循环等效于
while bool(i):
...
bool(i)
只要True
为i != 0
,False
为i == 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
循环期望任何条件True
或False
。当您编写while i
(假设i = 5
)时,它会被评估为True
,因此循环会继续,但当遇到i=0
时,它会被评估为False
并且循环中断。
答案 5 :(得分:0)
Python通过将其转换为布尔值来自动计算传递给它的变量的truthy
值。由于i
是非零正整数在Python中被认为是真的,这就是它工作的原因,直到它最终变为0被认为是假的。
>>> print(bool(3))
True
>>> print(bool(0))
False