- 如何编写结果要么为True要么为False的条件测试;
- 如何编写简单的if语句、if-else语句和if-elif-else结构,并且在程序中使用这些结构来测试特定的条件,以确定这些条件是否满足;
- 如何在利用高效的for循环的同时,以不同于其他元素的方式对特定的列表元素进行处理。
if __name__ == '__main__':
cars = ['audi', 'bmw', 'subaru', 'toyota']
for car in cars:
if car == 'bmw':
print(car.upper())
else:
print(car.title())
每条if语句的核心都是一个值为True或False的表达式,这种表达式称为条件测试。
如果条件测试的值为True,Python就执行紧跟在if语句后面的代码;如果为False,Python就忽略这些代码。
要检查是否两个条件都为True,可使用关键字and将两个条件测试合而为一。
例如,要检查是否两个人都不小于21岁
❸ >>> age_0 = 22
>>> age_1 = 18
❷ >>> age_0 >= 21 and age_1 >= 21
False
为改善可读性,可将每个测试分别放在一对圆括号内,但并非必须这样做。
(age_0 >= 21) and (age_1 >= 21)
关键字or也能够让你检查多个条件,但只要至少一个条件满足,就能通过整个测试。仅当两个测试都没有通过时,使用or的表达式才为False。
至少一个人的年龄不小于21岁:
❶ >>> age_0 = 22
>>> age_1 = 18
❷ >>> age_0 >= 21 or age_1 >= 21
True
要判断特定的值是否已包含在列表中,可使用关键字in
创建一个列表,其中包含用户点的比萨配料,然后检查特定的配料是否包含在该列表中。
>>> requested_toppings = ['mushrooms', 'onions', 'pineapple']
>>> 'onions' in requested_toppings
True
使用关键字not in,来判断值不包含在列表中。
与条件表达式一样,布尔表达式的结果要么为True,要么为False,首字母不能小写。
game_active = True
can_edit = False
最简单的if语句只有一个测试和一个操作:
if conditional_test:
dosomething
age = 19
❶ if age >= 18:
❷ print("You are old enough to vote!")
在if语句中,缩进的作用与在for循环中相同。
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!")
Python只执行if-elif-else结构中的一个代码块。它依次检查每个条件测试,直到遇到通过了的条件测试。测试通过后,Python将执行紧跟在它后面的代码,并跳过余下的测试。
一个根据年龄段收费的游乐场:
▲ 4岁以下免费;▲ 4~18岁收费25美元;▲ 18岁(含)以上收费40美元。
age = 12
❶ if age < 4:
print("Your admission cost is $0.")
❷ elif age < 18:
print("Your admission cost is $25.")
❸ else:
print("Your admission cost is $40.")
❶处的if测试检查一个人是否不满4岁。如果是,Python就打印一条合适的消息,并跳过余下测试。❷处的elif代码行其实是另一个if测试,仅在前面的测试未通过时才会运行。
优化
为了让代码更简洁,可不在if-elif-else代码块中打印门票价格,而只在其中设置门票价格,并在它后面添加一个简单的函数调用print():
age = 12
if age < 4:
❶ price = 0
elif age < 18:
❷ price = 25
else:
❸ price = 40
❹ print(f"Your admission cost is ${price}.")
下面假设增加一个条件测试:对于65岁(含)以上的老人,可半价(即20美元)购买门票:
age = 12
if age < 4:
price = 0
elif age < 18:
price = 25
❶ elif age < 65:
price = 40
❷ else:
price = 20
print(f"Your admission cost is ${price}.")
Python并不要求if-elif结构后面必须有else代码块。使用一条elif语句来处理特定的情形更清晰:
age = 12
if age < 4:
price = 0
elif age < 18:
price = 25
elif age < 65:
price = 40
❶ elif age >= 65:
price = 20
print(f"Your admission cost is ${price}.")
else是:只要不满足任何if或elif中的条件测试,其中的代码就会执行。这可能引入无效甚至恶意的数据。如果知道最终要测试的条件,应考虑使用一个elif代码块来代替else代码块。
如果要添加青椒,则说明已经用完了
requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']
for requested_topping in requested_toppings:
❶ if requested_topping == 'green peppers':
print("Sorry, we are out of green peppers right now.")
❷ else:
print(f"Adding {requested_topping}.")
print("\nFinished making your pizza!")
如果顾客要在比萨中添加炸薯条,该怎么办呢?可使用列表和if语句来确定能否满足顾客的要求。
❶ available_toppings = ['mushrooms', 'olives', 'green peppers',
'pepperoni', 'pineapple', 'extra cheese']
❷ requested_toppings = ['mushrooms', 'french fries', 'extra cheese']
❸ for requested_topping in requested_toppings:
❹ if requested_topping in available_toppings:
print(f"Adding {requested_topping}.")
❺ else:
print(f"Sorry, we don't have {requested_topping}.")
print("\nFinished making your pizza!")
参考:《python编程:从入门到实践(第二版)》