目录
1.简单介绍if
在实际应用中我们经常需要检查一系列条件,并根据条件决定采取什么措施,此时我们就需要使用到if语句。下面是一个简单的示例,演示了如何使用if语句来正确地处理特殊情形。假设你有一个汽车列表,并想将其中每辆汽车地名称打印出来。对于大多数汽车,都应以首字母大写的方式打印其名称,但对于汽车名“bmw”,应以全部大写方式打印。
cars = ['audi', 'bmw', 'subaru', 'toyota']
for car in cars:
if car == 'bmw':
print(car.upper())
else:
print(car.title())
上面的示例中遍历一个列表,并以首字母大写的方式打印其中的汽车名,但是对于汽车名“bmw”,以全大写的方式打印。示例中的循环首先检查当前汽车名是否为“bmw”。如果是,就以全大写的方式打印它;否则就以首字母大写的方式打印。输出结果为:
Audi
BMW
Subaru
Toyota
2.条件测试
每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为条件测试。Python根据条件测试的值为True还是False来决定是否执行if语句中的代码。如果条件测试的值为True,Python就执行紧跟在if语句后面的代码;如果为False,Python就忽略这些代码。
2.1 检查是否相等
大多数条件测试都将一个变量的当前值同特定值进行比较。最简单的条件测试检测变量的值是否与特定值相等。例如:
num = '123'
print(num == '123')
输出结果为
True
上例中,首先我们使用给变量num赋值为“123”(使用等号赋值)。接下来,使用两个等号(==)检查num的值是否为“123”,并使用print函数显示结果。这个相等运算符(==)在它两边的值相等时返回True,否则返回False。在这个示例中,两边的值相等,因此Python返回True。同理如果变量num的值不是“123”,则Python返回False。
2.2 检查是否相等时考虑大小写
因为Python中默认区分大小写,所以在检查是否相等时,两个大小写不同的值会被视为不相等。例如:
name = "Tom"
print(name == 'tom')
输出结果为:
False
若大小写很重要,这种检查是十分必要的。但是若大小写无关紧要,则可以将变量的值转换成小写,再进行比较:
name = "Tom"
print(name.lower() == 'tom')
输出结果为:
True
其中函数lower()只会将变量的取出后转换为小写,不会影响原来的变量。
有时候,网站采用类似的方式让用户输入的数据符合特定的格式。例如,网站可能使用类似的测试来保护用户名是独一无二的,而并非只是与另一个用户名的大小写不同。用户注册新的用户名时,把它转换为小写,并与已有的所有用户名的小写进行比较。执行这种检查后,若已有用户名“tom”(不管大小写如何),则用户提交新的用户“Tom”时将遭到拒绝。
2.3 检查是否不相等
若要检查不相等,可以使用不相等号(!=),其中“!”表示不。 例如,我们将学生的名字保存在一个变量里,再打印一条消息,指出学生是否是“Tom”:
student_name = "Alex"
if student_name != "Tom":
print("my name isn't Tom")
输出结果:
my name isn't Tom
if语句将student_name的值与“Tom”进行比较,如果它们不相等,则返回True,进而执行紧跟在if后的代码块;如果它们相等,则返回False,不执行紧跟在if后的代码块。
有时候检查两个值是否不相等的效率比检查相等的效率更高。
2.4 比较数字
检查数值非常简单,相等和不相等的比较都与上面说的变量的比较一样。我们主要说一下,数字的比较,如小于、小于等于、大于、大于等于:
num = 5
print(num < 8)
print(num <= 8)
print(num > 8)
print(num >= 8)
输出结果为:
True
True
False
False
2.5 检查多个条件
实际应用中经常出现需要同时检查多个条件的情况,例如有时需要在两个条件都满足时才执行相应的操作,而有时只要满足两个条件之一就可以执行相应的操作,此时关键字and和or可以助你一臂之力。
需要检查两个条件都满足时,可以使用and将两个条件合二为一,若两个条件都满足,则整个表达式为True;若至少有一个条件没有通过,整个表达式就为False。
例如,要检查是否两个人都不小于21岁:
age_0 = 22
age_1 = 18
bool_0 = age_0 >=21 and age_1 >=21
print(bool_0)
age_1 = 23
bool_0 = age_0 >=21 and age_1 >=21
print(bool_0)
输出结果为:
False
True
上例中,首先我们定义了两个用于存储年龄的变量:age_0和age_1。然后我们检查这两个变量是否都大于等于21;第一个条件满足但是第二个条件不满足,因此整个条件表达式的结果为False。后面我们将age_1重新赋值为23,这样两个条件都满足了,因此整个条件表达式的结果为True。
关键字or也可以检查多个条件,只要至少有一个条件满足,就能通过整个测试;只有当两个测试都没有通过时,使用or的表达式才为False。
例如检查两个人的年龄,条件是至少有一个人的年龄不小于21:
age_0 = 18
age_1 = 23
bool_0 = age_0 >=21 or age_1 >=21
print(bool_0)
输出结果为:
True
同样,我们首先定义了两个用于存储年龄的变量。由于第二个条件满足了,因此整个表达式的结果为True。
2.6 检查特定值是否包含在列表中
有时候执行操作前必须检查列表是否包含特定的值。例如,结束用户的注册过程前,可能需要检查他提供的用户名是否已包含在用户名列表中。在地图程序中,可能需要检查用户提交的位置是否包含在已知位置列表中。
要判断特定的值是否已包含在列表中,可使用关键字in。例如,查看顾客在披萨店点的披萨配料是否在特定的配料表中:
requesteds = ['mushrooms', 'onions', 'pineapple']
print('onions' in requesteds)
print('onions' not in requesteds)
输出结果为:
True
False
关键字in让Python检查列表requesteds是否包含onions。另外使用not in可以检查列表是否不包含在列表中。
2.7 布尔表达式
简单点说,布尔表达式可以理解为条件测试。与条件表达式一样,布尔表达式的结果要么为True,要么是False。
布尔值通常用于记录条件,如游戏是否正在运行,或用户是否可以编辑网站的特定内容。在跟踪程序状态或程序中重要的条件方面,布尔值提供了一种高效的方式。