目录
条件测试
if 语句
if-else 语句
三元操作符
if-elif-else 结构
if 语句与列表
每一条 if 语句的核心都是一个值为 True 或 False 的表达式,这种表达式称为条件测试。
Python 程序语言指定任何 非0 和 非空(null)值为 True,0 或者 null 为 False。
比较关系运算符:== != < <= > >=
逻辑运算符:and、or 检查多个条件
and:每个条件都是 True,表达式 True;至少有一个条件 False,表达式 False;
or:至少有一个条件 True,表达式 True;每个条件都是 False,表达式 False。
成员运算符:in、not in
布尔表达式:True、False。布尔类型可以当作整数对待,True = 1、False = 0。
>>> True + True # 1+1
2
>>> True + False # 1+0
1
>>> True * False # 1*0
0
Python 根据条件测试的值为 True 还是 False 来决定是否执行 if 语句中的代码:True,执行;False,忽略。执行内容可以多行,以缩进来区分表示同一范围。
if 判断条件:
为 True 执行的语句(为 False 忽略)……
基本形式:
if 判断条件:
为 True 执行的语句……
else:
为 False 执行的语句……
else 为可选语句,在条件不成立时执行相关语句:
cars = ['audi', 'bmw', 'subaru', 'toyota']
for car in cars:
if car == 'bmw': # == 为 True
print(car.upper(), end = ' ')
else:
print(car.title(), end = ' ')
print('') # 换行
for car in cars:
if car != 'bmw': # != 为 True
print(car.upper(), end = ' ')
else:
print(car.title(), end = ' ')
'''输出结果:
Audi BMW Subaru Toyota
AUDI Bmw SUBARU TOYOTA
'''
N元操作符:这个操作符有多少个操作数。如:
负号(-):一元操作符,只有一个操作数;
等号(=):二元操作符,等号左右两个操作数。
三元操作符有三个操作数,语法:a = x if 条件 else y 。可以用一条语句完成条件判断和赋值操作,如:
x = '777 * 888'
y = '666 * 999'
if eval(x) < eval(y):
print('x is smaller,', x, '=', eval(x))
else:
print('y is smaller,', y, '=', eval(y))
'''输出结果:
y is smaller, 666 * 999 = 665334
'''
# 上例使用三元操作符
x = '777 * 888'
y = '666 * 999'
print('x is smaller,',x,'=',eval(x)) if eval(x) < eval(y) else print('y is smaller,',y,'=',eval(y))
#|—————————————True执行————————————| |——————if条件——————| else |————————————False执行————————————|
elif:Python 中可用 elif 代替 else if。
if-elif-else 结构用于判断超过两个的情形。Python只执行 if-elif-else 结构中的一个代码块,它依次检查每个条件测试,直到遇到通过了的条件,即执行其后代码块,并跳过余下的测试。
if 条件1:
【条件1为 True】执行…
elif 条件2:
【条件1为 False】且【条件2为 True】执行…
else:
【条件2为 False】执行…
【实例】门票,18岁以下半票¥50;18~59岁,全票¥100;60岁及以上免票。
# 方法一:堆砌 if 语句
age = int(input('请输入年龄:'))
if age < 18:
print('半价票¥50')
if 18 <= age <= 59:
print('全价票¥100')
if age > 59:
print('免票¥0')
# 方法二:使用 else if
age = int(input('请输入年龄:'))
if age < 18:
print('半价票¥50')
else:
if 18 <= age <= 59:
print('全价票¥100')
else:
print('免票¥0')
# 方法三:使用 elif,注意与方法二对比(格式、缩进)
age = int(input('请输入年龄:'))
if age < 18:
print('半价票¥50')
elif 18 <= age <= 59:
print('全价票¥100')
else:
print('免票¥0')
方法一无论情况如何,都会遍历所有 if 语句,而 if-elif-else 结构不会。如果有可能符合多个条件、需要运行多个代码块需要用 if ,如果只想执行一个代码块用 if-elif-else 结构。
可以根据需要使用任意多个 elif 代码块,但结尾最多只能有一个else语句。else 可以根据需要用 elif 替代。
age = int(input('请输入年龄:'))
if age < 18:
print('半价票¥50')
elif 18 <= age <= 59:
print('全价票¥100')
elif 60 <= age < 70:
print('特价票¥20')
elif 70 <=age:
print('免门票¥0')
利用列表为空返回 False 确定列表是否为空。
names = []
if names: #为空则 False,非空则 True
print('有人报名') # True 执行
else:
print('没人报名') # False 执行
使用 if 对多个列表比对
bigcitys = ['上海', '北京', '广州', '深圳']
citys = ['厦门', '深圳', '上海', '珠海']
for city in citys:
if city in bigcitys:
print(city + '是一线城市')
else:
print(city + '非一线城市')
'''输出结果:
厦门非一线城市
深圳是一线城市
上海是一线城市
珠海非一线城市
'''