4.1 if语句实例
cars = ['audi', 'bmw', 'toyota', 'mazda']
for car in cars:
if car == 'bmw':
print(car.upper())
else:
print(car.title())
4.2 条件测试
每条if 语句的核心都是一个值为True或False 的表达式,这种表达式被称为条件测试 。
Python根据条件测试的值为True 还是False 来决定是否执行if 语句中的代码。
如果条件测试的值为True ,Python就执行紧跟在if 语句后面的代码;
如果为False ,Python就忽略这些代码。
car == 'bmw' # 检查是否相等
requested_topping != 'anchovies' # 检查是否不相等
age == 18 # 比较数字
age < 18
age <= 18
age > 18
age >= 18
(age_0 >= 21) and (age_1 >= 21) # 与
(age_0 >= 21) or (age_1 >= 21) # 或
"Changcheng" in cars # 检查特定值是否包含在列表中
"Changcheng" not in cars # 检查特定值是否不包含在列表中
4.3 if语句
4.3.1 最简单的if语句
最简单的if 语句只有一个测试和一个操作:
age = 21
if age >= 18:
print("You are able to drink!")
4.3.2 if-else语句
if-else 语句块类似于简单的if语句,但其中的else 语句让你能够指定条件测试未通过时要执行的操作。
age = 1
if age >= 18:
print("You are able to drink!")
else:
print("You are too young!")
4.3.3 if-elif-else 结构
Python只执行if-elif-else 结构中的一个代码块,它依 检查每个条件测试,直到遇到通过了的条件测试。测试通过后,Python 将执行紧跟在它后面的代码,并跳过余下的测试。
age = 3
if age <= 4:
price = 0
elif age < 18:
price = 4
else:
price = 10
print("Your price is " + str(price) + "$.")
4.3.4 使用多个elif代码块
age = 34
if age <= 4:
price = 0
elif age < 18:
price = 4
elif age < 65:
price = 8
else:
price = 0
4.3.5 省略else代码块
Python并不要求if-elif 结构后面必须有else 代码块。在有些情况下,else 代码块很有用;而在其他一些情况下,使用一条elif 语句来处理特定的情形更清晰
age = 70
if age <= 4:
price = 0
elif age < 18:
price = 4
elif age < 65:
price = 8
elif age >= 65:
price = 0
print("Your price is " + str(price) + "$.")
4.4 练习
4-1 条件测试 :编写一系列条件测试;将每个测试以及你对其结果的预测和实际结果都打印出来。
# 4-1
food = "KFC"
print("If the food is McDonald's? I predict true")
print(food == "McDonald's")
4-2 更多的条件测试 :对于下面列出的各种测试,至少编写一个结 果为True 和False 的测试。
检查两个字符串相等和不等。
使用函数lower() 的测试。
检查两个数字相等、不等、大于、小于、大于等于和小于等于。
使用关键字and 和or 的测试。
测试特定的值是否包含在列表中。
测试特定的值是否未包含在列表中。
# 4-2
food = "M"
print(food == "KFC")
print(food == "M")
print(food.lower() == "m")
print(food.lower() == "M")
age = 18
print(age == 18)
print(age >= 19)
print(age <= 20)
age1 = 5
age2 = 20
print(age1 >= 3 and age2 >= 18)
print(age1 <= 1 and age2 >= 18)
print(age1 <= 1 or age2 >= 18)
print(age1 <= 1 or age2 >= 28)
print("KFC" in food)
print("M" in food)
print("KFC" not in food)
print("M" not in food)
4-3 外星人颜色#1 :
假设在游戏中刚射杀了一个外星人,请创建一 个名为alien_color的变量,并将其设置为'green' 、'yellow' 或'red' 。
编写一条if 语句,检查外星人是否是绿色的;如果是,就打印一条消息,指出玩家获得了5个点。
编写这个程序的两个版本,在一个版本中上述测试通过了,而在另一个版本中未通过(未通过测试时没有输出)。
# 4-3
alien_color = 'green'
if alien_color == 'green':
print("player + 5 point!")
alien_color = 'red'
if alien_color == 'green':
print("player + 5 point!")
5-4 外星人颜色#2 :像练习5-3那样设置外星人的颜色,并编写一 个if-else 结构。
如果外星人是绿色的,就打印一条消息,指出玩家因射杀该外 星人获得了5个点。
如果外星人不是绿色的,就打印一条消息,指出玩家获得了10 个点。
编写这个程序的两个版本,在一个版本中执行if代码块,而 在另一个版本中执行else代码块。
# 4-4
alien_color = 'green'
if alien_color == 'green':
print("player + 5 point!")
else:
print("player + 10 point!")
alien_color = 'red'
if alien_color == 'green':
print("player + 5 point!")
else:
print("player + 10 point!")
5-5 外星人颜色#3 :将练习5-4中的if-else 结构改为if-elif-else 结构。
如果外星人是绿色的,就打印一条消息,指出玩家获得了5个点。
如果外星人是黄色的,就打印一条消息,指出玩家获得了10个点。
如果外星人是红色的,就打印一条消息,指出玩家获得了15个点。
编写这个程序的三个版本,它们分别在外星人为绿色、黄色和红色时打印一条消息。
# 4-5
alien_color = 'green'
if alien_color == 'green':
print("player + 5 points!")
elif alien_color == "yellow":
print("player + 10 points!")
else:
print("player + 15 points!")
alien_color = 'yellow'
if alien_color == 'green':
print("player + 5 points!")
elif alien_color == "yellow":
print("player + 10 points!")
else:
print("player + 15 points!")
alien_color = 'red'
if alien_color == 'green':
print("player + 5 points!")
elif alien_color == "yellow":
print("player + 10 points!")
else:
print("player + 15 points!")
4-6 人生的不同阶段 :设置变量age的值,再编写一个if-elif-else 结构,根据age的值判断处于人生的哪个阶段。
如果一个人的年龄小于2岁,就打印一条消息,指出他是婴儿。
如果一个人的年龄为2(含)~4岁,就打印一条消息,指出他正蹒跚学步。
如果一个人的年龄为4(含)~13岁,就打印一条消息,指出他是儿童。
如果一个人的年龄为13(含)~20岁,就打印一条消息,指出他是青少年。
如果一个人的年龄为20(含)~65岁,就打印一条消息,指出他是成年人。
如果一个人的年龄超过65(含)岁,就打印一条消息,指出他是老年人。
# 4-6
age = 32
if age < 2:
print("他是婴儿.")
elif age < 4:
print("他正蹒跚学步.")
elif age < 13:
print("他是儿童.")
elif age < 20:
print("他是青少年.")
elif age < 65:
print("他是成年人.")
else:
print("他是老年人.")
4-7 喜欢的水果 :创建一个列表,其中包含你喜欢的水果,再编写一系列独立的if语句,检查列表中是否包含特定的水果。
将该列表命名为favorite_fruits ,并在其中包含三种水果。
编写5条if语句,每条都检查某种水果是否包含在列表中,如果包含在列表中,就打印一条消息,如“You really like bananas!”。
# 4-7
favorite_fruits = ['banana', 'apple', 'orange']
if "banana" in favorite_fruits:
print("You really like bananas!")
if "apple" in favorite_fruits:
print("You really like apples!")
if "orange" in favorite_fruits:
print("You really like oranges!")
if "peach" in favorite_fruits:
print("You really like peaches!")
if "watermelon" in favorite_fruits:
print("You really like watermelon!")
4-8 以特殊方式跟管理员打招呼 :创建一个至少包含5个用户名的列表,且其中一个用户名为'admin' 。想象你要编写代码,在每位用户登录网站后都打印一条问候消息。遍历用户名列表,并向每位 用户打印一条问候消息。
如果用户名为'admin' ,就打印一条特殊的问候消息, 如“Hello admin, would you like to see a status report?”。 否则,打印一条普通的问候消息,如“Hello Eric, thank you for logging in again”。
# 4-8
users = ['alice', 'bob', 'admin', 'carol', 'frank']
for user in users:
if user == "admin":
print("Hello admin, would you like to see a status report?")
else:
print("Hello " + user + ",thank you for logging in again!")
4-9 处理没有用户的情形 :在为完成练习5-8编写的程序中,添加一条if语句,检查用户名列表是否为空。
如果为空,就打印消息“We need to find some users!”。
删除列表中的所有用户名,确定将打印正确的消息。
# 4-9
users = []
if users:
print(".")
else:
print("We need to find some users!")
4-10 检查用户名 :按下面的说明编写一个程序,模拟网站确保每位用户的用户名都独一无二的方式。
创建一个至少包含5个用户名的列表,并将其命名为current_users 。
再创建一个包含5个用户名的列表,将其命名为new_users 并确保其中有一两个用户名也包含在列表current_users中。
遍历列表new_users ,对于其中的每个用户名,都检查它是否已被使用。如果是这样,就打印一条消息,指出需要输入别的用户名;否则,打印一条消息,指出这个用户名未被使用。
确保比较时不区分大消息;换句话说,如果用户名'John' 已 被使用,应拒绝用户名'JOHN' 。
# 4-10
current_users = ['alice', 'bob', 'admin', 'carol', 'frank']
new_users = ['eve', 'bob', 'hans', 'carol', 'john']
current_users2 = []
for current_user in current_users:
current_users2.append(current_user.lower())
for new_user in new_users:
if new_user.lower() in current_users2:
print("该名称已被用户使用,请重新输入用户名!")
else:
print("该名称未被使用。")
4-11 序数 :序数表示位置,如1st和2nd。大多数序数都以th结尾, 只有1、2和3例外。
在一个列表中存储数字1~9。
遍历这个列表。
在循环中使用一个if-elif-else 结构,以打印每个数字对应的序数。输出内容应为1st 、2nd 、3rd 、4th 、5th 、6th 、7th 、8th 和9th ,但每个序数都独占一行。
# 4-11
numbers = list(range(1, 10))
for number in numbers:
if number == 1:
print("1st")
elif number == 2:
print("2nd")
elif number == 3:
print("3rd")
else:
print(str(number) + "th")