有人能告诉我为什么这个while循环在python中工作吗?
这是Python3中一个非常简单的while循环,它会像预期的那样返回“12之前(包括12之后)的所有自然数之和为78” 我感到困惑的是,为什么当“I”不受任何比较运算符约束时,“while I:”条件在这里起作用有人能告诉我为什么这个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
谢谢 在条件语句中,输入隐式转换为布尔值,因此循环等价于
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:)