第三章 流程控制
3.1 if语句
每条if 语句的核心都是一个值为True 或False 的表达式,这种表达式被称为条件测试 。
使用两个等号( == )检查值是否相等,要判断两个值是否不等,可结合使用惊叹号和等号(!= )。
requested_topping = 'hello_world'
if requested_topping != 'anchovies':
print("Hold the anchovies!")
-
检查多个条件
同时检查多个条件,可以使用关键字and 和or 。- 使用and 检查多个条件,如果每个测试都通过了,整个表达式就为True。
- 使用or 检查多个条件,只要至少有一个条件满足,就能通过整个测试。
-
检查特定值是否包含在列表中
要判断特定的值是否已包含在列表中,可使用关键字in 。toppings = ['mushrooms', 'onions', 'pineapple'] 'mushrooms' in requested_toppings >>> True
-
检查特定值是否不包含在列表中
要判断特定的值是否已包含在列表中,可使用关键字not in。banned_users = ['andrew', 'carolina', 'david'] user = 'marie' if user not in banned_users: print(user.title() + ", you can post a response if you wish.")
-
布尔表达式
布尔表达式的结果要么为True ,要么为False 。game_active = True can_edit = False
-
if 语句
if conditional_test: do something
-
if-else 语句
age = 17 if age >= 18: print("You are old enough to vote!") print("Have you registered to vote yet?") else: print("Sorry, you are too young to vote.") print("Please register to vote as soon as you turn 18!")
-
if-elif-else 结构
age = 12 if age < 4: print("Your admission cost is $0.") elif age < 18: print("Your admission cost is $5.") else: print("Your admission cost is $10.")
注意:可根据需要使用任意数量的elif 代码块,且Python并不要求if-elif 结构后面必须有else 代码块。
-
使用if 语句处理列表
requested_toppings = ['mushrooms', 'green peppers', 'extra cheese'] for requested_topping in requested_toppings: if requested_topping == 'green peppers': print("Adding " + requested_topping + ".")
-
确定列表不是空的
在运行for 循环前确定列表是否为空很重要。requested_toppings = [] if requested_toppings: for requested_topping in requested_toppings: print("Adding " + requested_topping + ".")
3.2 while 循环简介
-
while 循环
current_number = 1 while current_number <= 5: print(current_number) current_number += 1
-
使用标志
用于判断整个程序是否处于活动状态。这个变量被称为标志。# 标志 active = True while active: message = input(prompt) if message == 'quit': active = False else: print(message)
-
使用break 退出循环
要立即退出while 循环,不再运行循环中余下的代码,可使用break 语句。while True: city = input(prompt) if city == 'quit': break else: print("I'd love to go to " + city.title() + "!")
-
在循环中使用continue
要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用continue 语句,它不像break 语句那样不再执行余下的代码并退出整个循环。number = 0 while number < 10: number += 1 if number % 2 == 0: continue print(number)
-
使用while 循环来处理列表和字典
for 循环是一种遍历列表的有效方式,但在for 循环中不应修改列表,否则将导致Python难以跟踪其中的元素。要在遍历列表的同时对其进行修改,可使用while 循环。-
在列表之间移动元素
# 首先,创建一个待验证用户列表 # 和一个用于存储已验证用户的空列表 unconfirmed_users = ['alice', 'brian', 'candace'] confirmed_users = [] # 验证每个用户,直到没有未验证用户为止 # 将每个经过验证的列表都移到已验证用户列表中 while unconfirmed_users: current_user = unconfirmed_users.pop() print("Verifying user: " + current_user.title()) confirmed_users.append(current_user) # 显示所有已验证的用户 print("\nThe following users have been confirmed:") for confirmed_user in confirmed_users: print(confirmed_user.title())
-
删除包含特定值的所有列表元素
使用函数remove() 来删除列表中的第一个特定值。pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat'] print(pets) while 'cat' in pets: pets.remove('cat') print(pets)
-
使用用户输入来填充字典
responses = {} # 设置一个标志,指出调查是否继续 polling_active = True while polling_active: # 提示输入被调查者的名字和回答 name = input("\nWhat is your name? ") response = input("Which mountain would you like to climb someday? ") # 将答卷存储在字典中 responses[name] = response # 看看是否还有人要参与调查 repeat = 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 + ".")
-