5 if语句
5.1 布尔表达式
5.1.1 布尔变量与布尔表达式
布尔变量是有两种逻辑状态的变量,它包含真(True)和假(False)两个值,某些编程语言也用1表示真,0表示假。值为布尔变量的表达式称为布尔表达式。
举几个例子:
布尔表达式 1+2=3 的值为True
布尔表达式 1+3>5 的值为False
布尔表达式 1≠4 的值为True
5.1.2 比较运算符
Python中的比较运算符:
等于号(==)
不等于号(!=)
大于号(>)
大于等于号(>=)
小于号(<)
小于等于号(<=)
car = 'Audi'
print(car == 'BMW')
print(car == 'audi')
print(car.lower() == 'audi')
print(car != 'BMW')
False
False
True
True
5.1.3 逻辑运算符
1、或(or)
当P、Q中有一个为True时,P or Q 为True;
当P、Q中均为False时,P or Q 为False;
2、与(and)
当P、Q中均为True时,P and Q 为True;
当P、Q中有一个为False时,P and Q 为False;
3、非(not)
当P为True时,not P 为False;
当P为False时,not P 为True;
print(3+1 == 4 or 5<3)
print(3+1 == 4 and 5<3)
print(not 5<3)
True
False
True
小结:
P | Q | P or Q | P and Q | not P |
---|---|---|---|---|
True | True | False | True | True |
True | True | False | False | False |
False | True | True | False | True |
False | False | True | False | False |
运算优先级:或<与<非<括号
print(3+1 == 4 and not 5<3)
print(4>3 or 3+1 == 4 and 5<3)
print((4>3 or 3+1 == 4) and 5<3)
True
True
False
5.1.4 检查列表是否包含特定值
1、检查包含:使用关键字in
布尔表达式:value in list
注:若列表中包含该值,可以使用.index()方法获取该值的索引,如果该值多次出现,只能获取其第一次出现的索引。
2、检查不包含,使用关键字 not in
布尔表达式:value not in list
numbers = list(range(1,11))
print(11 in numbers)
print(11 not in numbers)
rapstars = ['XMASwu','bbnoS','Rich Brian','bbnoS']
print('bbnoS' in rapstars)
print('bbnoS' not in rapstars)
print(rapstars.index('bbnoS'))
False
True
True
False
1
5.2 if语句
5.2.1 简单的if语句(单分支结构)
if语句的基本结构是
if 布尔表达式 :(冒号)
(缩进) 代码
如果布尔表达式的值为True,则Python就会执行if语句后面的代码;否则,Python将忽略这些代码。
举个例子,某公园推出未成年人可购买10元的优惠门票,现在某游客的年龄为17岁。
age = 17
if age < 18:
price = 10
print(price)
10
5.2.2 if-else语句(二分支结构)
if-else语句的基本结构是
if 布尔表达式 :(冒号)
(缩进) 代码1
else :(冒号)
(缩进)代码2
如果布尔表达式的值为True,则Python就会执行if语句后面的代码1;否则,Python将将执行else后面的代码2。
继续上一个例子,该公园的全票价格为30元,现在某游客的年龄为20岁。
age = 20
if age < 18:
price = 10
else:
price = 30
print(price)
30
5.2.3 if-elif-else结构(多分支结构)
if-elif-else语句的基本结构是
if 布尔表达式1 :(冒号)
(缩进) 代码1
elif 布尔表达式2 :(冒号)
(缩进) 代码2
else :(冒号)
(缩进)代码3
中间的elif结构可以有多个,Python依次检查每个布尔表达式,直到遇到了值为True的布尔表达式,则执行其后相应的代码,并跳过余下测试。
继续上一个例子,该公园推出60岁及以上老人半价、70岁及以上老人免票的活动,现在某游客的年龄为65岁。
age = 65
if age < 18:
price = 10
elif age >= 60 and age <70:
price = 15
elif age >= 70:
price = 0
else:
price = 30
print(price)
15
5.2.4 省略else代码块
Python并不要求if-elif结构后面必须有else代码块,在某些情况下,else代码块很有用;而在某些情况下,使用一条elif语句来处理特定情形更加清晰。
将上一个例子的else代码块用elif代码块代替
age = 65
if age < 18:
price = 10
elif age >= 60 and age <70:
price = 15
elif age >= 70:
price = 0
elif age>=18 and age <60:
price = 30
print(price)
15
实际上,只要不满足if和elif条件的任何情况,else语句后的代码都会被执行,这可能引入无效甚至恶意的数据,如果知道最终需要判断的条件,可以直接用elif代码块来代替else代码块。
5.2.5 if语句的代码格式
注意在比较运算符两边各添加一个空格。
5.3 使用if语句处理列表的例子
5.3.1 检查列表是否非空
可以运用列表充当if语句后面的布尔表达式,如果列表非空则该表达式的值为True,进而可以检查列表是否非空。
举个例子,如果要检查晚会是否邀请到了rapper。
rapstars = []
if rapstars:
print('晚会已经有rapper了')
else:
print('晚会没有rapper')
晚会没有rapper
5.3.2 检查特殊元素
如果bbnoS临时有事不能来,可以利用if语句处理欢迎语
rapstars = ['XMASwu','bbnoS','Rich Brian']
for rapstar in rapstars:
if rapstar == 'bbnoS':
print('bbnoS临时有事不来了。')
else:
print(f"欢迎{rapstar}!")
欢迎XMASwu!
bbnoS临时有事不来了。
欢迎Rich Brian!
5.3.3 使用多个列表
如果到了互动环节,由一位观众提出让某些rapper一起表演节目,但是某些假粉丝可能提出了不在场的rapper,此时可以这样给予回应。
rapstars = ['XMASwu','bbnoS','Rich Brian']
requested_rapstars = ['Rich Brian','Lambert']
for requested_rapstar in requested_rapstars:
if requested_rapstar in rapstars:
print(f'{requested_rapstar}即将登场!')
else:
print(f'{requested_rapstar}今天没来,你这个假粉丝hhh')
Rich Brian即将登场!
Lambert今天没来,你这个假粉丝hhh