4.1 if语句实例

cars = ['audi', 'bmw', 'toyota', 'mazda']
for car in cars:
    if car == 'bmw':
        print(car.upper())
    else:
        print(car.title())

python if 非 语法 python if语句不等于_代码块

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!")

python if 非 语法 python if语句不等于_学习_02

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!")

python if 非 语法 python if语句不等于_if语句_03

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) + "$.")

python if 非 语法 python if语句不等于_代码块_04

4.3.4 使用多个elif代码块

age = 34
if age <= 4:
    price = 0
elif age < 18:
    price = 4
elif age < 65:
    price = 8
else:
    price = 0

python if 非 语法 python if语句不等于_用户名_05

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) + "$.")

python if 非 语法 python if语句不等于_代码块_06

4.4 练习

4-1 条件测试 :编写一系列条件测试;将每个测试以及你对其结果的预测和实际结果都打印出来。

# 4-1
food = "KFC"
print("If the food is McDonald's? I predict true")
print(food == "McDonald's")

python if 非 语法 python if语句不等于_用户名_07

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)

python if 非 语法 python if语句不等于_if语句_08

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!")

 

python if 非 语法 python if语句不等于_用户名_09

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!")

 

python if 非 语法 python if语句不等于_if语句_10

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("他是老年人.")

 

python if 非 语法 python if语句不等于_用户名_11

 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!")

python if 非 语法 python if语句不等于_python if 非 语法_12

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!")

python if 非 语法 python if语句不等于_代码块_13

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!")

python if 非 语法 python if语句不等于_if语句_14

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("该名称未被使用。")

python if 非 语法 python if语句不等于_用户名_15

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")

python if 非 语法 python if语句不等于_代码块_16