游戏开发工具

要知道,每个循环结构(while 或 for)都必须有停止运行的途径,这样才不会没完没了地执行下去。

例如,下面的循环从1数到5:

x = 1
while x <= 5:
    print(x)
    x += 1

运行结果为:

1
2
3
4
5

但如果像下面这样不小心遗漏了代码行x += 1,那么这个循环将没完没了地运行:

#这个循环将没完没了地运行
x = 1
while x <= 5:
    print(x)

在这里,x 的初始值为 1,但根本不会变,因此条件测试x <= 5始终为 True,导致 while 循环没完没了地打印 1,运行结果如下所示:

1
1
1
1
--snip--

每个程序员都会偶尔因为不小心而编写出无限(死)循环,在循环的退出条件比较微妙时尤其如此。

如果程序陷入无限循环,可按组合键Ctrl+C,也可关闭显示程序输出的终端窗口,如果前 2 种方式都无效,比如有些编辑器(如 Sublime Text)内嵌了输出窗口,这可能导致难以结束无限循环,因此不得不关闭编辑器来结束无限循环。

读者可能会问,怎样才能有效避免编写出包含无限循环的程序呢?

要避免编写无限(死)循环,应务必对每个 while 循环(或 for 循环)进行测试,确保它按预期那样结束。如果希望程序在用户输入特定值时结束,可运行程序并输入这样的值,如果此时程序没有结束,则说明该循环结构会无限循环,应检查程序处理这个值的方式。

总之,解决无限(死)循环的方法只有一个,即确认循环结构中至少有一个位置能让循环条件为 False 或让 break 语句得以执行。