为什么此垃圾邮件代码无限运行?

时间:2019-07-02 11:34:43

标签: python

两天之内就可以通过python考试了,这是非常基本的东西。 这是练习中给出的代码

spam = 0
while spam < 5:
    print('Hello, world.')
spam = spam + 1

我希望它能一直运行到命中5(因此,最后一行给出的+1是2次),但答案是“无限次”。

有人知道为什么吗? :)是不是因为在此示例中没有elif条件,所以是ir?

2 个答案:

答案 0 :(得分:3)

在python中,缩进很重要。试试这个:

spam = 0
while spam < 5:
    print('Hello, world.')
    spam = spam + 1

如果您不确定spam = spam + 1行,Python会将其解释为不在while块之外,因此它不会被执行,并且会一直循环下去。

答案 1 :(得分:3)

让我们逐行分解代码。

首先有

spam = 0

这会将变量spam设置为等于值0。并且它将一直保持该值,直到代码明确更改为止。

然后我们有一个while循环

while spam < 5:
    print('Hello, world.')

从字面上看,这意味着spam的值小于5时,请继续调用print('Hello World')。但是,垃圾邮件等于0,因此小于5是真实的,并且将永远是真实的。此循环也不会更改值,因此该循环将无限期运行。

最后,我们有

spam = spam + 1

此语句将spam递增1,但问题是此语句从未到达!即它被放置在无限期运行的循环之后!