if-elif-else分支语句
中等0如果你遇到岔路口——认识 if-elif-else 分支语句
生活中,我们每天都在做选择:
- 如果下雨,就带伞;否则不带。
- 如果考试得了90分以上,就奖励自己一个冰淇淋;如果80分以上,奖励一支棒棒糖;否则,什么都没有。
在Python里,我们也需要让程序“动脑筋”做选择。if-elif-else 就是用来干这个的——它让程序根据不同的条件,走不同的代码路线。
if翻译过来是“如果”elif是“否则如果”(可以连续写多个)else是“否则”(最后一个兜底选项)
下面我们就一步一步拆解它。
1. 最简单的选择:if...else
先看一个日常例子:判断出门要不要带伞。
is_rain = True # 是否下雨,这里假设下雨
if is_rain: # 如果下雨
print("带上伞!")
else: # 否则
print("不带伞。")
要点:
if后面写条件,条件可以是布尔值,也可以是计算结果为True或False的表达式。- 条件后面必须跟一个 英文冒号
:。 - 冒号下面要执行的代码必须 缩进(一般按一次Tab或4个空格)。
- 条件成立时执行缩进的第一段代码,不成立时执行
else后面的缩进代码(如果有else)。
2. 多条岔路:if...elif...else
生活中选择不止两个。比如根据分数给等级,开头那个例子就很典型:
score = int(input("请输入你的分数:")) # 输入分数并转为整数
if score >= 90: # 如果分数 >= 90
print("优秀")
elif score >= 80: # 否则如果分数 >= 80(且前面条件不成立)
print("良好")
elif score >= 60: # 否则如果分数 >= 60(且前两个条件不成立)
print("及格")
else: # 以上都不满足 → 低于60分
print("不及格")
程序怎么运行的?
就像在十字路口看指示灯:
先看第一个灯(score >= 90),如果亮(True),就走“优秀”那条路,然后结束;
如果第一个没亮(False),再看第二个灯(score >= 80),亮了就走“良好”;
如果还没亮,继续看第三个灯(score >= 60);
如果所有灯都不亮,最后走 else 那条“不及格”的路。
注意:条件是从上到下 依次检查 的,一旦找到第一个满足的条件,就执行对应的代码,后面的条件都不再检查。所以写 elif 时,顺序很重要!
3. 条件的顺序:一个常见陷阱
假设我们把上例的条件换一下顺序:
score = int(input("请输入你的分数:"))
if score >= 60: # 先判断是否及格
print("及格")
elif score >= 80: # 这个条件永远不会满足,因为 >=60 已经包含了 >=80
print("良好")
elif score >= 90:
print("优秀")
else:
print("不及格")
问题来了:如果输入 95,第一个条件 score >= 60 成立,直接输出“及格”,后面的“优秀”永远不会执行。
正确做法:把最严格的条件(分数最高)写在最前面,依次降低。这就是为什么原例把 >=90 放第一个。
4. 更多生活中的例子
按温度选衣服
temp = float(input("今天多少度?")) # 输入温度(浮点数)
if temp >= 30: # 温度 >= 30
print("穿短袖")
elif temp >= 20: # 20 ~ 29
print("穿薄外套")
elif temp >= 10: # 10 ~ 19
print("穿毛衣")
else: # 低于10度
print("穿羽绒服")
根据零花钱决定买什么零食
money = int(input("你口袋有多少零花钱?")) # 输入整数零花钱
if money >= 20: # ≥20元
print("买一盒巧克力")
elif money >= 10: # 10~19元
print("买一包薯片")
elif money >= 5: # 5~9元
print("买一根棒棒糖")
else: # 不足5元
print("什么也买不起,存着吧")
5. 新手最容易犯的四个错误
-
忘记冒号
if score >= 90后面少了:→ 语法错误。
正确:if score >= 90: -
缩进不一致或乱用空格
比如print("优秀")前面少缩进了,或者混用Tab和空格。
建议:整个代码块统一用Tab或4个空格,别混用。 -
把
elif写成else if
在Python里else if是错的,必须连在一起写elif。 -
条件顺序写反(就像前面温度那个例子)
记住:把最可能成立的条件写到前面(如果条件有包含关系,最严格的条件放最前面)。
6. 完整可运行示例:计算水果价格
下面这个程序根据顾客购买的水果类型和数量,计算总价,并给出不同折扣。
fruit = input("请选择水果(苹果/香蕉/橙子):") # 输入水果名
count = int(input("买多少个?")) # 输入数量
# 初始化单价(元/个)
price = 0 # 单价,先设为0
if fruit == "苹果":
price = 3
elif fruit == "香蕉":
price = 2
elif fruit == "橙子":
price = 4
else:
print("抱歉,没有这种水果!")
price = -1 # 标记错误
if price > 0: # 只有单价有效时才计算
total = price * count # 总价 = 单价 * 数量
# 根据总价给折扣
if total >= 20: # 满20打8折
final = total * 0.8
print("总价:", total, "元,打8折后:", final, "元")
elif total >= 10: # 满10打9折
final = total * 0.9
print("总价:", total, "元,打9折后:", final, "元")
else:
print("总价:", total, "元,没有折扣")
运行效果示例:
请选择水果(苹果/香蕉/橙子):苹果
买多少个?7
总价: 21 元,打8折后: 16.8 元
7. 更多相关知识点
- 条件表达式(三目运算符):用于简单的二选一,例如
"优秀" if score >= 90 else "加油" - 逻辑运算符:
and(且)、or(或)、not(非)可以组合多个条件,比如判断一个数是否在60到80之间:if score >= 60 and score <= 80 - 嵌套 if:在
if或elif或else的代码块里再写if(比如上面示例中,判断总价后又对折扣做了分支) - switch-case 的替代:Python没有
switch,但可以用if-elif-else实现相同的效果。
掌握了分支语句,你的程序就能像人一样“见风使舵”啦!试着用 if-elif-else 写一个判断闰年的程序吧(规则:能被4整除但不能被100整除,或者能被400整除)。
例题精讲
执行以下代码,输出结果是? x = 5 if x > 5: print('A') elif x == 5: print('B') else: print('C')
执行以下代码,输出结果是? if 0: print('yes') else: print('no')
在 if-elif-else 结构中,如果多个条件同时为真,则所有满足条件的分支都会被执行。
在 Python 中,if 语句的条件表达式后面必须加上冒号(:)。
根据分数输出等级:90分及以上为'A',80-89为'B',70-79为'C',60-69为'D',60分以下为'E'。请补全以下代码。
score = 85
if score >= 90:
grade = 'A'
___ score >= 80:
grade = 'B'
elif score >= 70:
grade = 'C'
___ score >= 60:
grade = 'D'
___:
grade = 'E'
print(grade)