第5关:if语句与条件判断——让Python学会"做选择题"
家人们,前面学的变量、列表、字典,都是让Python"存东西""整理东西",但如果想让Python"自己做决定"——比如判断成绩是否及格、用户输入是否正确、数值大小关系,就必须解锁"if语句"这个"决策神器"!
你以为if语句是"高深逻辑"?其实它和生活中的"选择场景"一模一样!比如早上起床的决策:"如果今天下雨,就带雨伞;如果不下雨,就带太阳帽"——Python的if语句就是把这种"如果…就…"的逻辑,翻译成代码让电脑执行。
举个最简单的例子:判断一个数字是否大于10
```python
num = 15
if num > 10:
print("这个数字比10大!")
```
代码逻辑翻译过来就是:"给电脑一个数字15,如果15大于10,就打印'这个数字比10大!'"——电脑会乖乖执行判断,输出结果,是不是比想象中简单?
1. 写 `if` + 判断条件 + 冒号 `:`
2. 换行缩进(一定要缩进!Python靠缩进识别代码块)
3. 写满足条件时要执行的代码
💡 新手口诀:"if带冒号,代码要缩进",不然电脑会一脸懵:"你到底让我什么时候执行这段代码?"
| 错误类型 | 错误示例 | 报错信息 |
|---------|---------|---------|
| 忘加冒号 | `if num > 10` | SyntaxError |
| 缩进混乱 | 有的2空格,有的4空格 | IndentationError |
Python对格式可是个"强迫症",必须统一!
if语句只能处理"满足条件"的情况,如果想处理"满足"和"不满足"两种情况——比如"成绩及格就打印'通过',不及格就打印'补考'",就需要"if-else语句",相当于生活中的"要么…要么…"。
**实战案例:判断考试成绩是否及格**
```python
score = 75
if score >= 60:
print("考试通过!")
else:
print("需要补考哦~")
```
- 不用写判断条件!它默认对应"if条件不成立"的所有情况
- 不管分数是59、30还是0,都会执行else的内容
- 不用再写 `if score < 60`,省了很多代码
⚠️ 新手踩坑点:else后面加了判断条件!比如 `else score < 60:`,这是错误的,else不能带条件,带条件的是后面要学的elif——别让else"超纲"干活!
生活中很多选择不止两个,比如"成绩90分以上是优秀,80-89是良好,60-79是及格,60以下是不及格"——这时候就需要"if-elif-else语句",相当于"如果…否则如果…否则…",能处理多个条件判断,堪称Python的"决策树"。
实战案例:给成绩评级
```python
score = 88
if score >= 90:
print("评级:优秀")
elif score >= 80:
print("评级:良好")
elif score >= 60:
print("评级:及格")
else:
print("评级:不及格")
```
按顺序判断,直到找到满足的条件:
1. 先判断是否≥90,满足就输出优秀
2. 不满足就判断是否≥80,满足就输出良好
3. 还不满足就判断是否≥60,满足就输出及格
4. 都不满足就执行else,输出不及格
错误示范:先写 `elif score >= 60`,再写 `elif score >= 80`
后果:88分只会触发第一个满足的条件(≥60),输出"及格",这就错了!
正确做法:必须按"从高到低"或"从低到高"的顺序写条件
2. 可以有多个elif
想加"60-69是及格,70-79是中等"?直接加!数量不限,按需添加。
3. else可以省略
如果所有情况都用elif覆盖了,比如"1-3是春季,4-6是夏季,7-9是秋季,10-12是冬季",没有"其他情况",就可以不用写else。
⚠️ 新手踩坑点:条件重叠!比如 `if score > 80` 和 `elif score > 70`,85分会同时满足两个条件,但Python只会执行第一个满足的if,后面的elif不会再判断——所以条件必须是"互斥"或"递进"的,不能重叠混乱。
想同时判断多个条件?不用写多个if,用逻辑运算符就能搞定:
| 运算符 | 含义 | 示例 |
|-------|------|------|
| `and` | 且(全部满足) | `if score >= 60 and score <= 80:` |
| `or` | 或(满足一个) | `if age >= 18 or has_id == True:` |
| `not` | 非(反转结果) | `if not score < 60:` 相当于 `if score >= 60` |
💡 优先级提示:`and` 比 `or` 优先级高,比如 `a or b and c` 会先算 `b and c`。想改变顺序?用括号 `(a or b) and c`
不用写完整的if-else,一行代码就能搞定:
```python
status = "通过" if score >= 60 else "失败"
```
相当于把if-else"压缩"成一行,简洁又高效,适合简单的赋值场景。
比写多个 `==` 判断快10倍,堪称"容器判断神器"!
```python
if "a" in "apple":
print("包含'a'")
if "苹果" in shopping_list:
print("购物清单里有苹果")
if "name" in student:
print("字典里有姓名信息")
```
| 知识点 | 核心记忆点 | 生活类比 |
|-------|-----------|---------|
| if语句 | if + 条件 + 冒号,代码要缩进 | 如果下雨,就带伞 |
| if-else | 非此即彼二选一 | 要么带伞,要么带帽 |
| if-elif-else | 多条件决策树 | 成绩分级、季节判断 |
| 逻辑运算符 | and/or/not组合判断 | 且、或、非 |
| 简洁赋值 | 一行写if-else | 浓缩精华 |
| 成员运算符 | in/not in判断包含 | 查字典、查清单 |
闯关成功! 现在你已经掌握了让Python"自己做选择"的核心技能,下一关我们将解锁"循环语句",让Python帮你"重复干活"不喊累!