第4章 Python 条件判断 if / elif / else
程序之所以叫"程序",一大半是因为它会"看情况办事":分数够不够、用户有没有权限、数据空不空……Python 的条件判断写起来很直白——
if 条件:后面加冒号,缩进就是代码块。没有大括号,靠缩进说话。
一、基本结构 if / elif / else
defcheck_score(score):ifscore>=90:grade="优秀"elifscore>=75:grade="良好"elifscore>=60:grade="及格"else:grade="不及格"returngradeforsin[95,80,61,45]:print(f"分数{s}->{check_score(s)}")输出:
分数 95 -> 优秀 分数 80 -> 良好 分数 61 -> 及格 分数 45 -> 不及格要点:
- 条件后面必须有冒号
:; - 代码块靠缩进区分(一般 4 个空格),Python 里缩进错了直接报错或语义全变;
elif是else if的缩写,可以连写多个,从上往下第一个满足就执行,后面的不再判断。
二、逻辑组合:and / or / not
Java 用&& || !,Python 用单词and or not:
age=20has_id=Trueifage>=18andhas_id:print("可以进入网吧")else:print("禁止进入")输出:
可以进入网吧and(且)、or(或)、not(取反)和 Java 一样有短路特性:and左边为 False 就不会再算右边。
三、三元表达式:一行 if
简单的"二选一赋值",Python 的写法是:
x=5result="偶数"ifx%2==0else"奇数"print(f"{x}是{result}")输出:
5 是奇数值A if 条件 else 值B——条件成立取 A,否则取 B。比 Java 的条件 ? A : B更接近自然语言。
四、判断空值:Python 的隐式真假
Python 里很多值可以直接当布尔用(“真值/假值”):空字符串、空列表、None、0 都是"假":
data=[]ifnotdata:print("data 是空的")name=""ifname:print("name 有值")else:print("name 是空字符串")输出:
data 是空的 name 是空字符串所以判断列表空不空不用写len(data) == 0,直接if not data:就行——这是 Python 非常地道的写法。但要小心:0、0.0、空字符串都是假值,如果某变量"合法取值就是 0",别用if x:判断"有没有值",要用if x is not None:。
五、成员判断:in / not in
fruits=["苹果","香蕉","橘子"]print("苹果 in fruits:","苹果"infruits)if"西瓜"notinfruits:print("没有西瓜")输出:
苹果 in fruits: True 没有西瓜in不只用于列表,字典里判断"键是否存在"("key" in dict)也用它,比 Java 的containsKey顺口得多。
六、本章小结
- 结构:
if 条件: / elif 条件: / else:,缩进定代码块,冒号不能省; - 组合:
and / or / not,短路特性和 Java 一样; - 三元:
A if 条件 else B; - 空值判断用隐式真假:
if not data:最地道; in / not in判成员,列表字典通用;- 连续判断从左到右,命中即停(elif 链)。
下一篇:第5章 Python 循环 for / while