for循环用于针对集合中的每个代码块,而while循环不断地运行,直到指定的条件不满足为止。你每天使用的程序很可能就包含while循环。例如,游戏使用while循环,确保在玩家想玩游戏时不断运行,并在玩家想退出时停止。如果程序在用户没有让它停止运行,或者在用户要退出时还继续运行,那就太没意思了,有鉴于此,while循环很有用。
我们让程序在满足指定条件时就执行特定的任务,但在复杂的程序中,很多不同的事件都会导致程序停止运行。例如,在游戏中,多种事件都可能导致游戏结束,如玩家一艘飞船都没有了或要保护的城市被摧毁了。导致程序结束的事件有很多时,如果在一条while语句中检查所有这些条件,既复杂又困难。在要求很多条件都满足才继续运行的程序中,可定义一个变量,用于判断整个程序是否处于活动状态。这个变量称为标志,充当了程序的交通信号灯。你可让程序标志为Ture时继续运行,并在任何事件导致标志的值为False时让程序停止运行。这样,在while语句中就只需检查一个条件------标志的当前值是否为Ture,并将所有测试(是否发生了应将标志设置为False的事件)都放在其他地方,从而让程序变得更为简洁。
要立即退出while循环,不再运行循环中余下的代码,也不管条件测试的结果如何,可使用break语句。break语句用于控制程序流程。可使用它来控制哪些代码将执行,哪些代码不执行,从而让程序按你的要求执行你要执行的代码。
注意:在任何Python循环中都可使用break语句。例如,可使用break语句来退出,遍历列表或字典的for循环。
要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用continue语句,它不像break语句那样不再执行余下的代码并退出整个循环。要避免写无限循环,break语句那样不再执行余下的代码并退出整个循环。要避免写无限循环,务必对每个while循环进行测试,可运行程序并输入这样的值,如果在这种情况下程序没有结束,请检查程序处理这个值得方式,确认程序至少有一个这样的地方能让循环条件为False或让break语句得以执行。
有些编辑器(如sublime Text)内嵌了输出窗口,这可能导致难使用while循环来处理字典和列表。for循环是一种遍历列表的有效方式,但在for循环中不应修改列表,否则将导致Python难以跟踪其中的元素。要在遍历列表的同时对其进行修改,可使用while循环。通过将while循环同列表和字典结合起来,存储并组织大量输入,供以后查看和显示。
假设有一个列表,其中包含新注册,但还未验证的网站用户,验证这些用户后,如何将他们移动到另一个已验证用户列表中呢?一种办法是使用一个while循环,在验证用户的同时,将其从未验证用户到列表中提取出来,再将其加入到另一个已验证用户列表中。