[英]Questions about the while loop in python
关于Coursera的测验我无法理解
i = 1
while i % 3:
print(i, end = ' ')
if i >= 10:
break
i += 1
我希望输出为1,2,3,4,5,6,7,8,9,但实际输出为12。我不明白什么是“ while i%3”,有人可以解释一下吗?
python中的%(模)运算符从第一个数字除以第二个数字计算出余数。
EG: 5 % 3 == 2
当i
在程序中增加到3
时, 3 % 3
的结果为0
。
在Python中, 0 == False
,所以当i
增加到3
,它将不再满足while循环条件。
您可以通过以下方法自己尝试:
while 0:
print("Hello world!")
这个stackoverflow答案很好地总结了一下: https : //stackoverflow.com/a/961351/9822083
python中的%
符号表示Modulus运算符-可能更容易理解为“余数”。 我相信您想说的是“我<3”
%
代表模量算子。
返回商的小数部分(余数)。
https://python-reference.readthedocs.io/en/latest/docs/operators/modulus.html
while i % 3
返回i % 3
的值不为0
, while i % 3
一直执行,这是i = 3
>>> 1 % 3
1
>>> 2 % 3
2
>>> 3 % 3
0
任何整数都会在while循环中被视为“ True”,而在命中“ False”时,while循环将停止。 因此,“ if”语句在此代码中实际上是无用的或多余的。
>>>1 % 3
1 - which means true
>>>3 % 3
0 - which means false so the while loop stops and doesn't even run
然后,当您增加i时,结束循环。 在if语句之前,所有这些甚至可以运行10次。 因此响应为1,2。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.