《Python编程:从入门到实践》2-9章 笔记 (6)

我们在其中定义了一个退出值,只要用户输入的不是这个值,程序就接着运行:

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循环。

7.2.5 在循环中使用 continue

要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用continue语句,它不像break语句那样不再执行余下的代码并退出整个循环。
例如,来看一个从1数到10,但只打印其中偶数的循环:

current_number = 0 while current_number < 10: current_number += 1 if current_number % 2 == 0: continue #忽略余下的代码,并返回到循环的开头 print(current_number)

输出:

1 3 5 7 9 7.2.6 避免无限循环

每个while循环都必须有停止运行的途径,这样才不会没完没了地执行下去。

要避免编写无限循环,务必对每个while循环进行测试,确保它按预期那样结束。如果希望程序在用户输入特定值时结束,可运行程序并输入这样的值;如果在这种情况下程序没有结束,请检查程序处理这个值的方式,确认程序至少有一个这样的地方能让循环条件为False或让break语句得以执行。

7.3 使用 while 循环来处理列表和字典

for循环是一种遍历列表的有效方式,但在for循环中不应修改列表,否则将导致Python难以跟踪其中的元素。
要在遍历列表的同时对其进行修改,可使用while循环。通过将while循环同列表和字典结合起来使用,可收集、存储并组织大量输入,供以后查看和显示。

7.3.2 删除包含特定值的所有列表元素

假设有一个宠物列表,其中包含多个值为’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()

responses = {} # 设置一个标志,指出调查是否继续 polling_active = True while polling_active: # 提示输入被调查者的名字和回答 name = raw_input("\nWhat is your name? ") response = raw_input("Which mountain would you like to climb someday? ") # 将答卷存储在字典中 responses[name] = response # 看看是否还有人要参与调查 repeat = raw_input("Would you like to let another person respond? (yes/ no) ") if repeat == \'no\': polling_active = False # 调查结束,显示结果 print("\n--- Poll Results ---") for name, response in responses.items(): print(name + " would like to climb " + response + ".")

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwfppd.html