1. 执行过程
单个if 语句中的每一个条件, 最多只能有一个满足. 如果多个条件都符合, 则只执行满足第一个条件的程序块.
2. 语句结构
2.1 语法
if 真值表达式:
语句块1...
elif 真值表达式:
语句块2...
elif 真值表达式:
语句块3...
…
else:
语句块4
说明:
- elif 子句可有1个或多个,也可以没有
- else子句最多只能有一个,也可以没有(只能放在最后)
根据以上可以分成多种结构:
- if 结构
如:
num = 300
if num % 2 == 0:
print("It's an even number")
print("It's a number")
输出为:
It's an even number
It's a number
- if else 结构
如:
num = 301
if num % 2 == 0:
print("It's an even number")
else:
print("It's an odd number")
print("It's a number")
输出为:
It's an odd number
It's a number
- if elif else 结构
如:
# 判断一个数是正数, 0, 或者负数
n = 10
if n > 0:
print("正数")
elif n == 0:
print("零")
else:
print("负数")
输出为:
正数
3. if 语句的真值表达式
if 语句的真值表达式是指用于判断的表达式, 如果其bool值为True, 则进入该条件下的程序块.
这里列举一些特别的真值表达式:
In [2]: a = ""
In [4]: bool(a)
Out[4]: False
In [5]: b = None
In [6]: bool(b)
Out[6]: False
In [7]: c = "任意非空字符串"
In [8]: bool(c)
Out[8]: True
In [9]: d = 0
In [10]: bool(d)
Out[10]: False
In [11]: d = 20
In [12]: bool(d)
Out[12]: True
In [13]: e = [10, 20, 30]
In [14]: bool(e)
Out[14]: True
In [15]: f = []
In [16]: bool(f)
Out[16]: False
4. if 语句的嵌套
if 语句可以作为语句嵌套到另一个if 语句的内部.
如:
# 判断学生成绩是否合格
score = float(input("请输入学生成绩:"))
if 0 <= score <= 100:
print("成绩合法")
if score >= 90:
print("优")
elif score >= 80:
print("良")
elif score >= 60:
print("及格")
else:
print("不及格")
else:
print("您的输入有误!")
5. 条件表达式
- 语法:
表达式1 if 真值表达式 else 表达式2
注意: 两个表达式不能是语句,如赋值语句- 作用
根据真值表达式的取值(True/False)来决定执行表达式1还是表达式2,并返回相应的结果
如:
# 商场促销,满 200 减 50
money = float(input("请输入商品总额:"))
pay = money-50 if money >= 200 else money
print("您需要支付:", pay)
print("您需要支付:", pay)
6. 布尔运算
在使用 if 语句时, 有时需要满足多个语句或者其组合, 这时涉及到布尔运算.
布尔运算用到布尔运算符, not
, and
, or
- 布尔与操作 and
- 语法:
x and y
注:x 和 y 表示表达式- 作用:
优先返回假值
当 x 为布尔值为 False 时,返回 x, 否则返回 y(返回的是对象)
如:
In [7]: c = "任意非空字符串"
In [11]: d = 20
In [25]: d and c
Out[25]: '任意非空字符串'
In [26]: bool(d and c)
Out[26]: True
In [30]: b = ""
In [31]: b and c
Out[31]: ''
In [32]: bool(b and c)
Out[32]: False
- 布尔或操作 or
- 语法:
x or y
注:x 和 y 表示表达式- 作用:
优先返回真值对象
当 x 为布尔值为 True 时,返回 x, 否则返回 y(返回的是对象)
如:
In [33]: x = ""
In [34]: y = 123
In [35]: z = [10, 20, 30]
In [36]: x or y
Out[36]: 123
In [37]: y or z
Out[37]: 123
In [38]: z or y
Out[38]: [10, 20, 30]
In [39]: y or x
Out[39]: 123
- 布尔非操作 not
- 语法:
not x
注:x 表示表达式- 作用:
直接返回 bool 值, 先计算x的 bool 值, 然后取反
In [43]: x = ""
In [44]: y = [123]
In [45]: z = [10, 20, 30]
In [46]: not x
Out[46]: True
In [47]: not y
Out[47]: False
In [48]: not z
Out[48]: False