在Python中,if语句让你能够检查程序的当前状态,并采取相应的措施。
一、一个简单的示例
下面的示例演示了如何使用if语句来正确地处理特殊的情形。假设你有一个汽车列表,想将其中每辆汽车的名称打印出来。对于大多数汽车,应以首字母大写的方式打印其名称,但是汽车名“bmw”应以全大写的方式打印。
cars=['audi','bmw','subaru','toyota']
for car in cars:
if car=='bmw':
print(car.upper())
else:
print(car.title())
示例中的循环首先检查当前汽车名是否是'bmw',如果是,就以全大写的方式打印,否则以首字母大写的方式打印:
Audi
BMW
Subaru
Toyota
二、条件测试
每条if语句的核心都是一个值为True或False的表达式,这种表达式称为条件测试。Python根据条件测试的值是True还是False来决定是否执行if语句中的代码。如果条件测试的值为True,Python就执行紧跟在if语句后面的代码;如果为False,Python就忽略这些代码。
1、检查是否相等
大多数条件测试将一个变量的当前值与特定的值进行比较。最简单的条件测试检查变量的值是否与特定的值相等:
>>> car='bmw'
>>> car=='bmw'
True
相等运算符在它两边的值相等时返回True,否则返回False。
2、检查是否不等
要判断两个值是否不等,可使用不等运算符(!=)。
animal='cat'
if animal!='dog':
print("It is not a dog")
3、数值比较
条件语句可包含各种数学比较,如小于、小于等于、大于、大于等于、等于、不等于。
>>> age=19
>>> age<11
False
>>> age<=21
True
>>> age>21
False
>>> age>=21
False
4、检查多个条件
(1)使用and检查多个条件
要检查两个条件是否都为True,可使用关键字and将两个条件测试合二为一。如果每个条件测试都通过了,整个表达式就为True;如果至少一个条件测试没有通过,整个表达式就为False。
>>> age_0=22
>>> age_1=18
>>> age_0>=21 and age_1>=21
False
>>> age_1=22
>>> age_0>=21 and age_1>=21
True
(2)使用or检查多个条件
关键字or也能够让你检查多个条件,但只要满足其中一个条件,就能通过整个条件测试。仅当所有条件测试都没有通过时,使用or的表达式才为False。
>>> age_0=22
>>> age_1=18
>>> age_0>=21 or age_1>=21
True
>>> age_0=18
>>> age_0>=21 or age_1>=21
False
5、检查特定的值是否在列表中
要判断特定的值是否在列表中,可使用关键字in。
>>> animals=['cat','dog','fish']
>>> 'fish' in animals
True
>>> 'horse' in animals
False
6、检查特定的值是否不在列表中
在这种情况下,可使用关键字not in。
>>> animals=['cat','dog','fish']
>>> 'fish' not in animals
False
>>> 'horse' not in animals
True
7、布尔表达式
与条件表达式一样,布尔表达式的结果要么为True,要么为False。布尔值通常用于记录条件。
active=true
三、if语句
1、简单的if语句
最简单的if语句只有一个条件测试和一个操作:
if conditional_test:
do something
第一行可包含任意条件测试,而在紧跟在测试后面的缩进代码块中可执行任意操作。如果条件测试的结果为True,Python就会执行紧跟在if语句后面的代码块,否则Python将忽略这些代码。
2、if-else语句
if-else语句块类似于简单的if语句,但其中的else语句让你能够指定条件测试未通过时要执行的操作。
if animal!='dog':
print("It is not a dog")
else:
print("It is a dog")
3、if-elif-else语句
如需要检查两个以上的情形,此时可使用Python提供的if-elif-else语句。Python只执行if-elif-else结构中的一个代码块。它依次检查每个条件测试,直到遇到通过了的条件测试。条件测试通过后,Python将执行紧跟在它后面的代码,并跳过余下的条件测试。
age=12
if age<4:
print("Your age is less than 4")
elif age<18:
print("Your age is less than 18")
else:
print("Your age is less than or equal to 18")
4、使用多个elif代码块
可以根据需要使用任意数量的elif代码块。
age=12
if age<4:
price=0
elif age<18:
price=10
elif age<65:
price=40
else:
price=20
5、省略else代码块
Python并不要求if-elif结构后面必须有else代码块。else是一条包罗万象的语句,只要不满足任何if或elif中的条件测试,其中的代码就会执行。这可能引入无效甚至恶意的数据。如果知道最终要测试的条件,应考虑使用一个elif代码块来代替else代码块。这样仅当满足相应的条件时,代码才会执行。
四、使用if语句处理列表
1、检查特殊元素
如示例中处理特殊值"bmw"。
2、确定列表非空
首先创建一个空列表,然后进行检查,在if语句中将列表名用作条件表达式时,Python将在列表至少包含一个元素时返回True,在列表为空时返回False。
animals=[]
if animals:
for animal in animals:
print(animal)
else:
print("No animals")
注:对于数值0、空值None、单引号空字符串''、双引号空字符串""、空列表[]、空元组()、空字典{},Python都会返回False。
3、使用多个列表
animals=['dog','cat','rabbit','horse']
small_animals=['dog','cat','rabbit']
for small_animal in small_animals:
if small_animal in animals:
print(small_animal)