if/elif/else,教程序做选择
今天学什么
上一篇我们学会了用变量存储数据,用数据类型区分不同的信息。但程序光会”记东西”还不够——它还得会”做选择”。
今天学的是条件判断:教程序根据不同的情况,走不同的路。
生活中的”岔路口”
你每天出门都在做条件判断:
如果 下雨:
带伞
否则:
不带伞
如果 温度 > 35度:
穿短袖
否则如果 温度 > 20度:
穿长袖
否则:
穿外套
这就是条件判断的本质:根据条件,选择不同的行为。
在编程里,Python用 if、elif、else 来表达这种”岔路口”逻辑。
if —— 最简单的判断
3.1 基本语法
if 条件:
条件成立时执行的代码
注意: if 后面有个冒号 :,下面的代码要缩进4个空格。
3.2 实例:判断是否成年
age = 20
if age >= 18:
print("你已经成年了!")
运行结果:
你已经成年了!
如果把 age 改成 15,什么都不会发生——因为条件不成立,程序跳过了 if 里的代码。
类比: if 就像路上的一个岔路口。条件成立,你走左边;条件不成立,你直接走大路(跳过)。
if-else —— 两条路都要走
大多数时候,我们希望”条件成立做什么,不成立做什么”都想清楚。
4.1 基本语法
if 条件:
条件成立时执行
else:
条件不成立时执行
4.2 实例:判断奇偶数
num = 7
if num % 2 == 0:
print(f"{num} 是偶数")
else:
print(f"{num} 是奇数")
运行结果:
7 是奇数
类比: if-else 就像一个Y字路口。左边是”条件成立”,右边是”条件不成立”,你必须选一条走,不会两条都走。
if-elif-else —— 多条岔路
现实世界往往不止两个选择。比如考试成绩要分A、B、C、D、F五个等级。
5.1 基本语法
if 条件1:
条件1成立时执行
elif 条件2:
条件2成立时执行
elif 条件3:
条件3成立时执行
else:
以上条件都不成立时执行
elif 是 else if 的缩写,表示”否则如果”。
5.2 实例:成绩等级判断
score = 85
if score >= 90:
print("A - 优秀!")
elif score >= 80:
print("B - 良好")
elif score >= 70:
print("C - 中等")
elif score >= 60:
print("D - 及格")
else:
print("F - 不及格,继续努力!")
运行结果:
B - 良好
重要规则: elif 是从上往下依次判断的,一旦某个条件成立,就执行对应的代码,后面的全部跳过。
所以当 score = 85 时:
85 >= 90?❌ 不成立,跳过85 >= 80?✅ 成立!执行print("B - 良好"),后面的不再判断
类比: 就像高速公路上的多个出口。你经过第一个出口检查站,如果目的地匹配就出去;不匹配就继续开到下一个检查站。
比较运算符 —— 条件的”天平”
条件判断的核心是比较。Python提供了6个比较运算符:
| 运算符 | 含义 | 示例 | 结果 |
|---|
|——–|——|——|——|
== |
等于 | 5 == 5 |
True |
|---|---|---|---|
!= |
不等于 | 5 != 3 |
True |
> |
大于 | 5 > 3 |
True |
< |
小于 | 5 < 3 |
False |
>= |
大于等于 | 5 >= 5 |
True |
<= |
小于等于 | 3 <= 5 |
True |
易错点: = 是赋值(给变量传值),== 才是比较(判断是否相等)。初学者最容易搞混这两个。
# ❌ 错误:把 == 写成 =
if age = 18: # SyntaxError!
print("成年")
# ✅ 正确
if age == 18:
print("成年")
逻辑运算符 —— 组合多个条件
有时候一个条件不够用,需要多个条件组合。
7.1 三个逻辑运算符
| 运算符 | 含义 | 示例 | 说明 |
|---|
|——–|——|——|——|
and |
并且 | a > 0 and b > 0 |
两个都成立,结果才为True |
|---|---|---|---|
or |
或者 | a > 10 or b > 10 |
有一个成立,结果就为True |
not |
取反 | not (a > 10) |
True变False,False变True |
7.2 实例:判断闰年
闰年的规则:能被4整除但不能被100整除,或者能被400整除。
year = 2024
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print(f"{year} 年是闰年")
else:
print(f"{year} 年不是闰年")
运行结果:
2024 年是闰年
7.3 实例:年龄区间判断
age = 25
if age >= 18 and age <= 60:
print("你是劳动适龄人口")
Python允许简写连续比较:
# 这两种写法等价
if age >= 18 and age <= 60:
print("可以工作")
if 18 <= age <= 60:
print("可以工作") # 更简洁!
缩进 —— Python的灵魂
这是今天最重要的部分之一。Python用缩进来表示代码块,而不是用大括号 {}。
8.1 为什么缩进这么重要?
在C语言或Java中:
// Java用大括号
if (age >= 18) {
System.out.println("成年");
System.out.println("可以投票");
}
在Python中:
# Python用缩进
if age >= 18:
print("成年")
print("可以投票")
缩进的代码属于 if 代码块,缩进结束意味着代码块结束。
8.2 缩进错误示例
score = 85
# ❌ 错误:print没有缩进,不属于if
if score >= 60:
print("及格") # IndentationError!
# ❌ 错误:缩进不一致(有的用空格,有的用Tab)
if score >= 60:
print("及格") # 4个空格
print("恭喜") # 1个Tab —— IndentationError!
# ✅ 正确:统一用4个空格
if score >= 60:
print("及格")
print("恭喜")
8.3 缩进规则总结
if、elif、else后面必须有冒号:- 冒号下面的代码必须缩进(推荐4个空格)
- 同一个代码块的缩进必须一致
- 不要混用空格和Tab(VS Code默认帮你转换)
- 缩进结束,代码块结束
嵌套 if —— 岔路里的岔路
if 里面可以再放 if,就像岔路里面还有岔路。
age = 25
has_id = True
if age >= 18:
print("年龄符合要求")
if has_id:
print("请进!")
else:
print("请出示身份证")
else:
print("未成年人不能进入")
运行结果:
年龄符合要求
请进!
注意缩进层级: 内层的 if 要比外层多缩进4个空格(总共8个空格)。
if age >= 18: # 第0层(不缩进)
print("成年") # 第1层(4个空格)
if has_id: # 第1层(4个空格)
print("请进") # 第2层(8个空格)
实战:猜数字游戏
学了条件判断,我们来写一个完整的小程序——猜数字游戏。
10.1 游戏规则
- 程序心里想一个数字(比如
42) - 玩家输入一个猜测的数字
- 程序判断猜对了、猜大了、还是猜小了
10.2 完整代码
# 猜数字游戏
# 程序设定一个秘密数字,玩家来猜
secret = 42 # 程序心里想的数字
# 获取玩家的输入
guess = int(input("请猜一个数字(1-100):"))
# 判断结果
if guess == secret:
print("🎉 恭喜你,猜对了!")
elif guess > secret:
print(f"📈 {guess} 太大了,再小一点!")
else:
print(f"📉 {guess} 太小了,再大一点!")
10.3 代码逐行解读
secret = 42
# 变量secret存储程序想的数字
guess = int(input("请猜一个数字(1-100):"))
# input()获取用户输入(字符串类型)
# int()把字符串转成整数
# 存到guess变量里
if guess == secret:
print("🎉 恭喜你,猜对了!")
# == 判断是否相等
elif guess > secret:
print(f"📈 {guess} 太大了,再小一点!")
# > 判断是否大于
else:
print(f"📉 {guess} 太小了,再大一点!")
# 以上都不满足,说明猜小了
10.4 运行效果
请猜一个数字(1-100):50
📈 50 太大了,再小一点!
请猜一个数字(1-100):30
📉 30 太小了,再大一点!
请猜一个数字(1-100):42
🎉 恭喜你,猜对了!
小练习
练习1:判断正负零
写一个程序,输入一个数字,判断它是正数、负数还是零。
num = int(input("请输入一个数字:"))
if num > 0:
print("正数")
elif num < 0:
print("负数")
else:
print("零")
练习2:BMI计算器(带判断)
height = float(input("请输入身高(米):"))
weight = float(input("请输入体重(公斤):"))
bmi = weight / (height * height)
print(f"你的BMI是:{bmi:.1f}")
if bmi < 18.5:
print("偏瘦,多吃点!")
elif bmi < 24:
print("正常,继续保持!")
elif bmi < 28:
print("偏重,注意饮食")
else:
print("肥胖,建议就医咨询")
练习3:改造猜数字游戏
在猜数字游戏的基础上,加上以下功能:
- 加一个变量
chances = 3,限制只能猜3次 - 如果3次都没猜对,打印”机会用完了,游戏结束!”
提示:这需要用到下一章的循环知识,可以先尝试用3个 if 实现。
今日小结
| 知识点 | 说明 |
|---|
|——–|——|
if |
条件成立时执行 |
|---|---|
elif |
否则如果,多个条件分支 |
else |
以上条件都不成立时执行 |
== != > < >= <= |
比较运算符,返回True/False |
and or not |
逻辑运算符,组合多个条件 |
| 缩进 | Python用4个空格缩进表示代码块 |
| 嵌套if | if里面可以再放if |
记住: = 是赋值,== 是比较。这是新手最常犯的错误。
下篇预告
今天我们学会了让程序”做选择”。但目前的程序只能判断一次、执行一次。
如果要让程序重复做某件事怎么办?比如让猜数字游戏能反复猜,直到猜对为止?
下一篇:AI编程(六):循环 —— 让程序不厌其烦
我们将学习 for 循环和 while 循环,教程序”重复劳动”,让猜数字游戏真正好玩起来!
发表回复