以下是我在Windows 10上用于Python 3.5.2的IDLE执行的代码:
spam = 0
while spam < 5:
print('Hello, world.')
spam = spam + 1
我可以看到Hello World打印5次但是在IDLE中输入垃圾邮件时,我可以看到整数5。 难道这不是逻辑上的int 6,因为while循环将在垃圾邮件从5增加1并且垃圾邮件变量以递增的int传递后立即停止吗?
谢谢!
答案 0 :(得分:3)
spam < 5
可以读取为垃圾邮件小于5,因此它只会从0增加到4.在第4次(最后一次)迭代中,spam = 4
因此它会打印&#39 ;你好,世界&#39;然后是spam + 1 = 5
。此时它将尝试另一次迭代,但spam < 5
不再为真,因此将退出循环。
供参考:<
表示小于,<=
表示小于或等于。
你认为自己有什么特别的原因?
答案 1 :(得分:2)
你的while循环是&#34;而垃圾邮件小于 5&#34;而不是&#34;而垃圾邮件小于或等于到5&# 34 ;.当垃圾邮件为4时,最后一次迭代发生,然后最后一次递增到5。
如果垃圾邮件等于5,则不小于5,因此while循环停止迭代。
答案 2 :(得分:0)
我添加了一份印刷声明来说明正在发生的事情:
spam = 0
while spam < 5:
print('Hello, world.')
spam = spam + 1
print(spam, 'spam is < 5?', spam < 5, "\n")
输出结果为:
Hello, world.
1 spam is < 5? True
Hello, world.
2 spam is < 5? True
Hello, world.
3 spam is < 5? True
Hello, world.
4 spam is < 5? True
Hello, world.
5 spam is < 5? False