Python编程:从入门到实践(五)

if语句

一、一个简单的事例

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

输出:

Audi
BMW
Subaru
Toyota

二、条件测试

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

检查是否相等
car = 'Audi' 
print(car == 'audi' ,"\n")
#False 

car = 'Audi'
print(car.lower() == 'audi')
print(car)
#True
#Audi
检查是否不相等

要判断两个值是否不等,可结合使用惊叹号和等号(!=)

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

输出:

Hold the anchovies!
比较数字

条件语句中可包含各种数学比较,如小于、小于等于、大于、大于等于。
在 if 语句中可使用各种数学比较,这让你能够直接检查关心的条件。

检查多个条件
  • 使用and检查多个条件
  • 使用or检查多个条件
检查特定值是否包含在列表中

要判断特定的值是否已包含在列表中,可使用关键字 in。

requested_toppings = ['mushrooms', 'onions', 'pineapple'] 
print('mushrooms' in requested_toppings)
#True
print('pepperoni' in requested_toppings)
#False
检查特定值是否不包含在列表中

要判断特定的值是否未包含在列表中,可使用关键字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.")
# Marie, you can post a response if you wish.
布尔表达式

术语布尔表达式,不过是条件测试的别名。与条件表达式一样,布尔表达式的结果要么为True,要么为False。
布尔值通常用于记录条件,如游戏是否正在运行,或用户是否可以编辑网站的特定内容:

game_active = True 
can_edit = False

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

三、if语句

简单的if语句

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

if conditional_test: 
    do something
if-else语句

经常需要在条件测试通过了时执行一个操作,并在没有通过时执行另一个操作;在这种情况下,可使用Python提供的if-else语句。

扫描二维码关注公众号,回复: 8992242 查看本文章
if conditional_test: 
    do something
else:
    do something
if-elif-else 结构

经常需要检查超过两个的情形,为此可使用Python提供的if-elif-else结构。

if conditional_test: 
    do something
elif conditional_test:
    do something
else:
    do something
使用多个elif代码块
if conditional_test: 
    do something
elif conditional_test:
    do something
elif conditional_test:
    do something
else:
    do something
省略else代码块

Python并不要求 if - elif 结构后面必须有else代码块。在有些情况下,else代码块很有用;而在其他一些情况下,使用一条elif语句来处理特定的情形更清晰。

if conditional_test: 
    do something
elif conditional_test:
    do something
elif conditional_test:
    do something
elif conditional_test:
    do something
测试多个条件

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

输出:

Adding mushrooms.
Adding extra cheese.

Finished making your pizza!

如果像下面这样转而使用 if - elif - else 结构,代码将不能正确地运行,因为有一个测试通过后,就会跳过余下的测试:

requested_toppings = ['mushrooms', 'extra cheese']
if 'mushrooms' in requested_toppings: 
    print("Adding mushrooms.")
elif 'pepperoni' in requested_toppings:
    print("Adding pepperoni.")
elif 'extra cheese' in requested_toppings:
    print("Adding extra cheese.") 
print("\nFinished making your pizza!")

输出:

Adding mushrooms.

Finished making your pizza!

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

四、使用if语句处理列表

检查特殊元素

比萨店在制作比萨时,每添加一种配料都打印一条消息。
通过创建一个列表,在其中包含顾客点的配料,并使用一个循环来指出添加到比萨中的配料。

requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']
for requested_topping in requested_toppings: 
    print("Adding " + requested_topping + ".")
print("\nFinished making your pizza!")

输出:

Adding mushrooms.
Adding green peppers.
Adding extra cheese.

Finished 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 right now.")
    else:
        print("Adding " + requested_topping + ".")
print("\nFinished making your pizza!")

输出:

Adding mushrooms.
Sorry, we are out of green peppers right now.
Adding extra cheese.

Finished making your pizza!
确定列表不是空的

如果列表是空的,就向顾客确认他是否要点普通比萨;如果列表不为空,就像前面的示例那样制作比萨。

requested_toppings = []
if requested_toppings:
    for requested_topping in requested_toppings:
        print("Adding " + requested_topping + ".") 
    print("\nFinished making your pizza!")
else:
    print("Are you sure you want a plain pizza?")

输出:

Are you sure you want a plain 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("Adding " + requested_topping + ".") 
    else:
        print("Sorry, we don't have " + requested_topping + ".")
print("\nFinished making your pizza!")

输出:

Adding mushrooms.
Sorry, we don't have french fries.
Adding extra cheese.

Finished making your pizza!

五、设置if语句的格式

在条件测试的格式设置方面,PEP 8提供的唯一建议是,在诸如==、>=和<=等比较运算符两边各添加一个空格,例如,if age < 4:要比if age<4:好。
这样的空格不会影响Python对代码的解读,而只是让代码阅读起来更容易。

发布了22 篇原创文章 · 获赞 0 · 访问量 619

猜你喜欢

转载自blog.csdn.net/weixin_45237889/article/details/103981068