我们在其中定义了一个退出值,只要用户输入的不是这个值,程序就接着运行:
Tell me something, and I will repeat it back to you: Enter \'quit\' to end the program. Hello everyone! Hello everyone! Tell me something, and I will repeat it back to you: Enter \'quit\' to end the program. Hello again. Hello again. Tell me something, and I will repeat it back to you: Enter \'quit\' to end the program. quit代码:
prompt = "\nTell me something, and I will repeat it back to you:" prompt += "\nEnter \'quit\' to end the program. " message = "" while message != \'quit\': message = raw_input(prompt) # 注意raw_input()已包含print(prompt)步骤 #print(message) if message == \'quit\': print(message) 7.2.3 使用标志在要求很多条件都满足才继续运行的程序中,可定义一个变量,用于判断整个程序是否处于活动状态。这个变量被称为标志,充当了程序的交通信号灯。可让程序在标志为True时继续运行,并在任何事件导致标志的值为False时让程序停止运行。这样,在while语句中就只需检查一个条件——标志的当前值是否为True,并将所有测试(是否发生了应将标志设置为False的事件)都放在其他地方,从而让程序变得更为整洁。
prompt = "\nTell me something, and I will repeat it back to you:" prompt += "\nEnter \'quit\' to end the program. " active = True while active: message = input(prompt) if message == \'quit\': active = False else: print(message) 7.2.4 使用break退出循环要立即退出while循环,不再运行循环中余下的代码,也不管条件测试的结果如何,可使用break语句。
注意: 在任何Python循环中都可使用break语句。例如,可使用break语句来退出遍历列表或字典的for循环。
要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用continue语句,它不像break语句那样不再执行余下的代码并退出整个循环。
例如,来看一个从1数到10,但只打印其中偶数的循环:
输出:
1 3 5 7 9 7.2.6 避免无限循环每个while循环都必须有停止运行的途径,这样才不会没完没了地执行下去。
要避免编写无限循环,务必对每个while循环进行测试,确保它按预期那样结束。如果希望程序在用户输入特定值时结束,可运行程序并输入这样的值;如果在这种情况下程序没有结束,请检查程序处理这个值的方式,确认程序至少有一个这样的地方能让循环条件为False或让break语句得以执行。
7.3 使用 while 循环来处理列表和字典for循环是一种遍历列表的有效方式,但在for循环中不应修改列表,否则将导致Python难以跟踪其中的元素。
要在遍历列表的同时对其进行修改,可使用while循环。通过将while循环同列表和字典结合起来使用,可收集、存储并组织大量输入,供以后查看和显示。
假设有一个宠物列表,其中包含多个值为’cat’的元素。要删除所有这些元素,可不断运行一个while循环,直到列表中不再包含值’cat’,如下所示:
pets = [\'dog\', \'cat\', \'dog\', \'goldfish\', \'cat\', \'rabbit\', \'cat\'] print(pets) while \'cat\' in pets: pets.remove(\'cat\') #list.remove(obj)移除列表中某个值的第一个匹配项 print(pets)输出:
[\'dog\', \'cat\', \'dog\', \'goldfish\', \'cat\', \'rabbit\', \'cat\'] [\'dog\', \'dog\', \'goldfish\', \'rabbit\'] 7.3.3 使用用户输入来填充字典创建一个调查程序,其中的循环每次执行时都提示输入被调查者的名字和回答。我们将收集的数据存储在一个字典中,以便将回答同被调查者关联起来:
注意python2 中用raw_input(),python3 中input()