Python if语句结构

1. 一个简单示例

下面是一个简短的示例,演示了如何使用if语句来正确地处理特殊情形。如下所示:

cars = ["audi","bmw","subaru","toyota"]
for car in acrs:
    if car == "bmw":
        print(car.upper())
    else:
        print(cat.title())

这个示例中的循环首先检查当前的汽车名是否是 bmw,如果是就以全大写方式打印,否则就以首字母大写的方式打印。

2. 条件测试

每条if语句的核心都是一个值为 True 或 False 的表达式,这种表达式称为条件测试。python 根据条件测试的值为 True 还是 False 来决定是否执行 if 语句中的代码,如果条件测试的值为 True,python 就执行紧跟在 if 语句后面的代码;如果为 False,python 就忽略这些代码。

2.1 检查是否相等

最简单的条件测试检查变量的值是否与特定值相等:

if car == "bmw":

这个相等运算符在值两边相等时返回 True,否则返回 False。需要注意的是一个等号表示赋值,两个等号才是相等运算符,千万不要混淆。

2.2 检查是否相等时区分大小写

在 python 中检查是否相等时区分大小写。例如:

car = "Audi"
if car =="audi":
# 结果  
False

如果大小写很重要,这种行为有其优点。但如果大小写无关紧要,只想检查变量的值,可使用函数lower( ) 将变量的值转换为小写,再进行比较,如下:

car = "Audi"
if car.lower() == "audi":
# 结果
True

函数不会影响原来的变量:

print(car)
# 结果
car = "Audi"

2.3 检查是否不相等

要判断两个值是否不等,可结合使用感叹号和等号,其中感叹号表示不,其他很多编程语言中也是如此。下面演示一下如何使用不等运算符:

requested_topping = "mushrooms"
if requested_topping != "anchovies":
    print("hold the anchovies")

你编写的大多数条件表达式检查两个值是否相等,但有时候检查两个值是否不等的效率更高。

2.4 数值比较

条件语句中可包含各种数学比较,如小于、小于等于、大于、大于等于。如下所示:

age = 19
if age < 21:
   print("1 is yes")
if age <= 21:
   print("2 is yes")
if age > 21:
   print("3 is yes")
if age >= 21:
   print("4 is yes")

2.5 检查多个条件

你可能想同时检查多个条件。例如,有时候需要在两个条件都为 True 时才执行相应的操作,而有时候只要求一个条件为 True。在这些情况下,关键字and和or可发挥作用。例如要检查是否两个人都不小于21岁,可使用下面的测试:

age_0 = 22
age_1 = 23
if age_0 >= 21 and age_1 >= 21:
   print("都正确")
# 为改善可读性,可将每个测试分别放在一对圆括号内,但不是必须这样做
# if (age_0 >= 21) and (age_1 >= 21):

关键字or能够让你检查多个条件,但只要有一个条件满足就能够通过条件测试。仅当两个测试都没通过时,使用 or 的表达式才为 False。

age_0 = 22
age_1 = 18
if age_0 >= 21 or age_1 >= 21:
   print("正确")

2.6 检查特定值是否包含在列表中

有时候,执行操作前必须检查列表是否包含特定的值。例如,在用户注册账户时可能需要检查他所提供的用户名是否已包含在用户名列表中。要判断特定的值是否已包含在列表中,可使用关键字in。如下:

requested_toppings = ["mushrooms","onions","pineapple"]
if "mushrooms" in requested_toppings:
    print("正确") 

这种技术很有用,让你能够在创建一个列表后,轻松的检查其中是否包含特定的值。还有些时候,需要确定特定的值未包含在列表中。在这种情况下,可使用关键字not in。例如:

banned_users = ["andrew","carolina","david"]
user = "marie"
if user not in banned_users:
    print("you can see something")

2.7 布尔表达式

随着你对编程的越来越深入了解,将遇到术语布尔(bool)表达式,它是条件测试的别名。与条件表达式一样,布尔表达式的结果要么为 True,要么为 False。布尔值常用于记录条件,如游戏是否正在运行:

game_active = True

在跟踪程序状态或程序中重要的条件方面,布尔值提供了一种高效的方式。

3. if语句

理解条件测试后,就可以开始编写 if 语句了。if 语句有很多种,选择使用哪种取决于要测试的条件数。

3.1 简单的if语句

最简单的 if 语句只有一个测试和一个操作:

if conditional_test:
    do something
# 示例
age = 10
if age < 20:
   print(age)

第一行可包含任何条件测试,而在紧跟测试条件后面的缩进代码中,可执行任何操作。如果条件测试结果为 True,python 就会执行紧跟在 if 语句后面的代码,否则 python 将忽略这些代码。在 if 语句中,缩进的作用与在 for 循环中相同。如果测试通过了,将执行 if 语句后面所有缩进的代码行,否则将忽略它们。

age = 19
if age >= 18:
    print("you are old enough to vote")
    print("you want to vote who")

3.2 if - else 语句

我们经常需要在条件测试通过时执行一个操作,在没有通过时执行另一个操作。在这种情况下,可使用 if - else 语句。该语句块类似于简单的 if 语句,但其中的 else 语句让你能够指定条件测试未通过时要执行的操作。如下:

age = 17
if age >= 18:
   print("you can vote")
else:
   print("you can not vote")

if - else 结构非常适合用于让 python 执行两种操作之一的情形。在这样的结构中,总是会执行两个操作中的一个。

3.3 if - elif - else 结构

我们经常需要检查超过两个的情形,为此可使用 python 提供的 if - elif - else 结构。python 只执行该结构中的一个代码块。它依次检查每个条件测试,直到遇到通过了的条件测试。测试通过后,python 将执行紧跟在它后面的代码,并跳过余下的测试。例如一个根据年龄段收费的游乐场:

age = 12
if age < 4:
    price = 0
elif age < 18:
    price = 25
else:
    price = 40
print(f"your admission cost is {price}")

3.4 使用多个elif代码块

可根据需要使用任意数量的elif代码块

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

3.5 省略else代码块

python 并不要求 if - elif 结构后面必须有 else 代码块。在有些情况下,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 代码块。这样就可以肯定,仅当满足相应的条件时,代码才会执行。

3.6 测试多个条件

if - elif - else 结构功能强大,但仅适用于只有一个条件满足的情况:遇到通过了的测试后,python 就跳过余下的测试。这种行为效率很高,让你能够测试一个特定的条件。然而有时候必须检查你关心的所有条件。在这种情况下,应使用一系列不包含 elif 和 else 代码块的简单 if 语句。在有可能有多个条件为 True 且需要在每个条件为 True 时都采取相应措施时,适合使用这种方法。

requested_toppings = ["mushrooms","extra cheese"]
if "mushrooms" in requested_toppings:
    print("adding mushrooms")
if "pepperoni" in requested_toppings:
    print("adding pepperoni")
if "extra cheese" in requested_toppings:
    print("adding extra cheese")
print("\nFinished making your pizza")

总之,如果只想执行一个代码块,就使用 if -elif - else 结构,如果要执行多个代码块,就使用一系列独立的 if 语句。

4. 使用 if 语句处理列表

通过结合使用 if 语句和列表,可完成一些有趣的任务:对列表中特定的值做特殊处理;高效的管理不断变化的情形。

4.1 检查特殊元素

继续使用前面的披萨店示例。这家店在制作披萨时,每添加一种配料都打印一条消息。通过创建一个列表,在其中包含顾客点的配料,并使用一个循环来指出添加到披萨中的配料,能以极高的效率编写这样的代码:

requested_toppings = ["mushrooms","green peppers","extra cheese"]
for requested_topping in requested_toppings:
    print(f"adding {requested_topping}")
print("\nFinished making your pizza")

然而,如果披萨店的青椒用完了,该如何处理呢?可在 for 循环中包含一条 if 语句:

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 now")
    else:
        print(f"adding {requested_topping}")
print("\nFinished making your pizza")

检查顾客是否点了青椒,如果是就显示不能点青椒的原因,如果不是青椒,就添加到披萨中。

4.2 确定列表是不是空的

到目前为止,我们对于处理的每个列表都做了一个简单的假设,即它们至少都包含一个元素。有鉴于此,在运行for循环前确定列表是否为空很重要。

requested_toppings = [ ]
if requested_toppings:
    for requested_topping in requested_toppings:
        print(f"adding {requested_topping}")
    print("\nFinished making your pizza")
else:
    print("are you sure you want a plain pizza?")

在 if 语句将列表名用作条件表达式时,python 将在列表至少包含一个元素时返回 True,并在列表为空时返回 False。

4.3 使用多个列表

顾客的要求往往五花八门,如果顾客要在披萨中添加炸薯条,该怎么办呢?可使用列表和 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("sorry, we are out of {requested_topping} now")
print("\nFinished making your pizza")

5. 设置 if 语句的格式

在条件测试的格式设置方面,PEP 8 提供的唯一建议是在诸如相等运算符、大于等于运算符和小于等于运算符等比较运算符两边各添加一个空格。例如:

if age < 4:
if age<4:

上面的代码比下面的代码更为美观,阅读起来也更为容易。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Litle_Pudding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值