一 条件测试
每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为条件测试。如果条件测试的值为True,Python就执行紧跟在if语句后面的代码;如果为False,Python就忽略这些代码。
1.检查是否相等
大多数条件测试都将一个变量的当前值同特定值进行比较。最简单的条件测试检查变量的值是否与特定值相等,运行代码如下:
# 检查是否相等 car = 'bmw' print(car == 'bmw') print(car == 'other')
运行结果如下:
True False
2.检查是否相等时不考虑大小写
在Python中检查是否相等时区分大小写,例如,两个大小写不同的值会被视为不相等:
# 仅首字母的大小写不同 car = 'bmw' print(car == 'Bmw')
运行结果如下:
False
如果大小写很重要,这种行为有其优点。但如果大小写无关紧要,而只想检查变量的值,可将变量的值转换为小写,再进行比较:
# 仅首字母的大小写不同,调用方法使其所有字母转化为小写 car = 'Bmw' print(car.lower() == 'bmw')
运行结果如下:
True
3.检查是否不相等
要判断两个值是否不相等,可结合使用惊叹号和等号,其中惊叹号表示不,与大部分编程语言一样。下面再使用一条if语句来演示如何使用不等运算符。我们将把要求的比萨配料存储在一个变量中,再打印一条消息,指出顾客要求的配料是否是小银鱼(anchovies):
requested_topping = 'mushrooms' if requested_topping != 'anchovies': print("Hold the anchovies!")
运行结果如下:
Hold the anchovies!
4.比较数字
条件语句中可包含各种数字比较,如小于、小于等于、大于、大于等于:
age = 19 age < 21 # True age <= 21 # True age > 21 # False age >= 21 # False
5.检查多个条件
1.使用and检查多个文件
要检查是否两个条件都为True,可使用关键字and将两个条件测试合而为一;如果每个测试都通过了,则整个表达式就为True;如果至少有一个测试没有通过,则整个表达式为False。
例如,要检查是否两个人都不小于21岁,可使用下面的测试:
age_0 = 22 age_1 = 18 age_0 >= 21 and age_1 >=21 # False
2.使用or检查多个文件
关键字or也能够让你检查多个文件,但只要至少有一个条件满足,就能通过整个测试。仅当两个测试都没有通过的时候,使用or表达式才为False。
6.检查特定值是否包含在列表中
要判断特定的值是否已经包含在用户名列表中,可使用关键字in。你可能为比萨店编写一些代码;这些代码首先创建一个列表,其中包含用户点的比萨配料,然后检查特定的配料是否包含在该列表中:
requested_toppings = ['mushrooms', 'onions', 'pineapple'] 'mushrooms' in requested_toppings # True 'pepperoni' in requested_toppings # False
7.检查特定值是否不包含在列表中
这里可以使用关键字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.
二 if语句
1.if - else 语句
经常需要在条件测试通过时执行一个操作,并在没有通过测试时执行另一个操作;在这种情况下,可使用Python提供的if-else 语句。if-else 语句类似于简单的if语句,但其中的else语句让你能够在指定条件测试未通过时要执行的操作。下面的代码在一个人够投票的年龄时显示与前面相同的消息,同时在这个人不够投票年龄时也显示一条消息:
age = 17 if age >= 18: print("You are old enough to vote!") print("Have you registered to vote yet?") else: print("Sorry, you are too young to vote.") print("Please register to vote as soon as you turn 18!")
age小于18,条件测试未通过,因此执行else代码块中的代码:
Sorry, you are too young to vote. Please register to vote as soon as you turn 18!
2.if - elif - else结构
Python只执行if-elif-else结构中的一个代码块,它依次检查每个条件测试,直到遇到通过了的条件测试。测试通过后,Python将执行紧跟在它后面的代码,并跳过余下的测试。
在现实生活中,很多情况需要考虑的情形都超过两个。例如,来看一个根据年龄段收费的游乐场:
4岁以下免费;
4 ~ 18岁收费5美元;
18岁(含)以上收费10美元。
如果只使用一条if语句确定门票的价格:
age = 12 if age < 4: price = 0 elif age < 18: price = 5 else: price = 10 print("Your admission cost is $" + str(price) + ".")
运行结果如下:
Your admission cost is $5.
3.测试多个条件
在这里不作赘述,如果你只想执行一个代码块,就使用if - elif - else结构;如果要运行多个代码块,就使用一系列独立的if语句。
三 使用if语句处理列表
1.检查特殊元素
在这里我们通过前面的比萨店示例研究如何检查列表中的特殊值,并对其做合适的处理。这家比萨店在制作比萨时,每添加一种配料都打印一条消息。通过创建一个列表,在其中包含顾客点的配料,并使用一个循环来指出添加到比萨中的配料,可以以极高的效率编写这样的代码:
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!
2.确定列表不是空的
下面在制作比萨前检查顾客点的配料列表是否为空。如果列表为空,就向顾客询问是否要点普通比萨;如果列表不为空,就像前面的示例那样制作比萨:
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?")
3.使用多个列表
顾客的要求往往五花八门,在比萨配料方面尤其如此。如果顾客要在比萨中添加炸薯条,该怎么办呢?可使用列表和if语句来确定能否满足顾客的要求。
来看看在制作比萨前如何拒绝怪异的配料要求。下面的示例定义了两个列表,其中第一个列表包含比萨店供应的配料,而第二个列表包含顾客点的配料。这次对于requested_toppings中的每个元素,都检查它是否是比萨店供应的配料,再决定是否在比萨中添加它:
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!