第5章 if语句

发布于 2022-03-06  55 次阅读


5.1 一个简单的示例

假设你有一个汽车列表,并想将其中每辆汽车的名称打印出来。对于大多数汽车,应以首字母大写的方式打印其名称,但对于'bmw'以全部大写的方式打印。

# cars2.py
cars = ['audi','bmw','subaru','toyota']

for car in cars:
    if car == 'bmw':
        print(car.upper())
    else:
        print(car.title())

file

5.2 条件测试

每条if语句的核心都是一个值为True或False的表达式,这种表达式称为条件测试。Python根据条件测试的值为True或False来选择执行。

5.2.1 检查是否相等

>>> car = 'byd'
>>> car == 'byd'
True
>>> car == 'myc'
False

5.2.2 检查是否相等时忽略大小写

大小写不同的变量视为不同。
若大小写不重要:

>>> car = 'Audi'
>>> car.lower() == 'audi'
True
>>> car
'Audi'

lower()不会修改car的值。

网站可以采用类似的方式让用户输入的数据符合特定的格式。例如:网站可能使用类似的测试来确保用户名是独一无二的,而并非只是与另一个用户名的大小写不同。

5.2.3 检查是否不相等

不等!=

fish = 'fish'

if fish != 'fishs':
    print("not fishs")

5.2.4 数值比较

5.2.5 检查多个文件

and(&&)

xx and xx

or(||)

xx or xx

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

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

>>> request_toppings = ['a','b','c']
>>> 'a' in request_toppings
True
>>> 'c' in request_toppings
True
>>> 'd' in request_toppings
False

这种技术很有用,让你能够创建一个列表后,轻松地检查其中是否包含特定的值。

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

not in
例如:有一个列表,其中包含被禁止在论坛上发表评论的用户,可以在允许用户提交评论之前检查他是否被禁言:

# banned_users.py
banned_users = ['andrew','carolina','david']
user = 'marie'

if user not in banned_users:
    print(f"{user.title()},you can post a response if you wish")

file

5.2.8 布尔表达式

xx = True
xx = False

5.3 if语句

5.3.1 简单if语句

if conditional_test:
    do something

其缩进规则与for类似

5.3.2 if-else语句

if xx:
    xx
else:
    xx

if-elif-else结构

if xx:
    xx
elif xx:
    xx
else:
    xx

在选择值的条件语句可以为了让代码更美观,将print放在else语句块后。

5.3.4 使用多个elif语句

5.3.5 省略else代码块

用if和elif包含所有的情况。
else是一条包罗万象的语句,只要满足任何if或elif中的条件测试,其中的代码就会执行。这可能引入无效甚至恶意的数据。如果知道最终要测试的条件,应考虑使用一个elif代码块来。这样可以肯定,仅当条件满足。才执行代码。

5.3.6 测试多个条件

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

5.4 使用if语句处理列表

对列表中特定的值做特殊处理;高效管理不断变化的情形,如果餐馆是否有特定的食材;证明代码再各种情形下都将按预期那样运行。

5.4.1 检查特殊元素

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

# toppings.py
requested_toppings = ['one','two','three']

for requested_topping in requested_toppings:
    print(f"Adding {requested_topping}")

print("\n Finish making your pizza!")

file

# toppings.py
requested_toppings = ['one','two','three']

for requested_topping in requested_toppings:
    if requested_topping == 'two':
        print('Sorry')
    else: 
        print(f"Adding {requested_topping}")

print("\n Finish making your pizza!")

file

5.4.2 确定列表不是空的

在运行for循环前面确认列表是否为空很重要。

if xxx:
    statement
else:
    statement2

Python在列表值少包含一个元素时候返回True,为空时返回False

5.4.3 使用多个列表

available_toppings = ['mushrooms','olives','green peppers'
                      'pepperonis','pineeapple','extra chees']
requested_toppings = ['mushrooms','frensh fries','extra cheese']

for requested_topping in requested_toppings:
    if requested_topping in available_toppings:
        print(f"Adding {requested_topping}")
    else:
        print("Sorry")
print("This is your pizzed")

file
如果比萨店供应配料是固定的,那么可以使用一个元组来储存他们。

5.5 设置if语句的格式

if age < 50:
# 比下面这种更好
if age<50:

擦肩而过的概率