Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人能告诉我为什么这个while循环在python中工作吗?_Python_Python 3.x_While Loop - Fatal编程技术网

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

有人能告诉我为什么这个while循环在python中工作吗?,python,python-3.x,while-loop,Python,Python 3.x,While Loop,这是Python3中一个非常简单的while循环,它会像预期的那样返回“12之前(包括12之后)的所有自然数之和为78” 我感到困惑的是,为什么当“I”不受任何比较运算符约束时,“while I:”条件在这里起作用 谢谢 在条件语句中,输入隐式转换为布尔值,因此循环等价于 sum, Nr = 0, 12 i = Nr while i: sum += i i -= 1 print ('The sum of all natural numbers up to (and inclusi

这是Python3中一个非常简单的while循环,它会像预期的那样返回“12之前(包括12之后)的所有自然数之和为78”

我感到困惑的是,为什么当“I”不受任何比较运算符约束时,“while I:”条件在这里起作用


谢谢

在条件语句中,输入隐式转换为布尔值,因此循环等价于

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))

bool(i)
只要
i!=0
,如果
i==0
,则
False
,因此循环一直持续到
i
变为零。

在条件语句中,输入隐式转换为布尔值,因此循环等价于

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))

bool(i)
只要
i!=0
,如果
i==0
,则
False
,因此循环一直运行,直到
i
变为零。

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

while bool(i):
    ...

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

while bool(i):
    ...

Python似乎隐式地替换了
i不等于零(伪代码)。看

Python似乎隐式地替换为
i不等于零(伪代码)。看

While
期望表达式,如果表达式为
true
is,则运行循环

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


While
期望表达式,如果表达式为
true
is,则运行循环

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


在python中,值是duck类型的——这意味着解释器可以尝试将值放入您所放置的任何上下文中。除零以外的所有数字都是“真实的”,例如

In [38]: bool(Nr)
Out[38]: True
鉴于零是虚假的:

if 3:  # True

在python中,值是duck类型的——这意味着解释器可以尝试将值放入您所放置的任何上下文中。除零以外的所有数字都是“真实的”,例如

In [38]: bool(Nr)
Out[38]: True
鉴于零是虚假的:

if 3:  # True

while
循环需要任何条件
True
False
。当您编写
而i
(假设
i=5
)时,它的计算结果为
True
,因此循环将继续,但当它遇到
i=0
时,它的计算结果为
False
,循环将中断。

循环预期任何条件
True
False
。当您编写
而i
(假设
i=5
)时,它的计算结果为
True
,因此循环继续,但当它遇到
i=0
时,它的计算结果为
False
,循环中断。

0绝对不被认为是负的。@MarkDickinson更正了。0绝对不被认为是负的。@MarkDickinson更正了。请注意,负数也是真的。。。因此,不要将
i-=1
更改为与
0
不完全匹配的任何内容,并结束循环。。。例:
i-=7
永远不会结束……谢谢!我刚开始编程,truthy falsy帮了很多忙!请注意,负数也是真实的。。。因此,不要将
i-=1
更改为与
0
不完全匹配的任何内容,并结束循环。。。例:
i-=7
永远不会结束……谢谢!我刚开始编程,truthy falsy帮了很多忙!所有零下的值都是真实的。更正答案@Jean-Françoisfar:)所有零下的值都是真实的。更正答案@Jean-Françoisfar:)