Python 多分支 if-elif-else
中等6Python多分支选择:if-elif-else的详细用法
在生活中,我们经常面对多于两种的选择。比如,根据考试成绩给不同的评语、根据天气穿不同的衣服、根据红绿灯决定是否过马路。Python 的 if-elif-else 语句就是专门用来处理这种“多选一”情况的——它会从上到下依次检查每个条件,一旦发现某个条件成立,就执行对应的代码,然后跳过后面所有的条件。
基本结构:if、elif、else
if后面写第一个条件,条件为真时执行它的代码块。elif是 “else if” 的缩写,可以写多个,每个后面跟一个新的条件。else是可选的,表示前面所有条件都不满足时执行的代码块。- 每个
if和elif后面必须有冒号:,对应的代码块要缩进(一般用4个空格)。
生活中的例子1:根据成绩给评语
比如,考试分数出来后,老师想用不同的话鼓励大家:
- 90分及以上 → “优秀”
- 80分到89分 → “良好”
- 60分到79分 → “及格”
- 60分以下 → “不及格”
score = 85 # 考试成绩,假设是85分
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")
运行结果输出 “良好”。因为85满足 score >= 80(虽然它也满足 >=60,但程序只执行第一个匹配的条件),所以不会继续检查后面的条件。
思考:如果我把条件的顺序颠倒,先检查 >=60 再检查 >=80,会怎样?
score = 85
if score >= 60: # 85>=60成立,直接输出“及格”
print("及格") # 程序不会再往下检查了!
elif score >= 80:
print("良好")
elif score >= 90:
print("优秀")
else:
print("不及格")
这样85分就会输出“及格”,显然是错的。所以条件的顺序非常重要,通常要把最严格、最特殊的条件放在最前面。
生活中的例子2:交通灯指示
过马路时,红绿灯有三种颜色,还有“灯坏了”的意外情况。
light = "red" # 当前交通灯颜色
if light == "red":
print("停下")
elif light == "yellow":
print("减速等待")
elif light == "green":
print("可以通行")
else:
print("灯坏了,小心通过")
如果哪天你遇到灯不亮或闪烁,代码会输出“灯坏了,小心通过”。注意:elif 可以有多个,但最多只有一个 else(也可以没有 else)。
生活中的例子3:天气穿衣建议
根据今天的气温,选择合适的衣服。我们可以用多分支写出清晰的建议。
temp = 25 # 今天的气温,单位摄氏度
if temp > 30:
print("穿短袖") # 太热了,短袖最凉快
elif temp > 20:
print("穿长袖") # 20-30度,长袖舒服
elif temp > 10:
print("穿外套") # 10-20度,加件外套
else:
print("穿棉袄") # 10度以下,冷!穿棉袄
当 temp = 25 时,输出“穿长袖”。如果你把条件顺序调成从低温开始,结果就会出错。
新手常犯的错误
- 忘记冒号:
if或elif后面忘了加:,Python 会报语法错误。 - 缩进不一致:同一个代码块内的语句必须对齐。有人混用 Tab 和空格,导致报错。
- 条件顺序搞反:把宽泛的条件放在前面,导致后面的条件永远没机会执行。
- 写了多个
else:一个if结构里只能有一个else,否则会报错。 - 混淆
elif和else:else后面不能再跟条件,也不能再写冒号后的表达式。正确的写法是else:,然后缩进写代码。 - 所有条件都写成
if:如果连续写多个独立的if,程序会逐个检查每一个,可能与原来的意图不同。多分支中,一旦匹配就会跳过后续,而多个if会依次执行所有满足条件的代码。
完整可运行的示例:水果价格折扣
小明开了一个水果店,他想根据顾客购买的水果种类和数量,自动计算折扣后价格。我们用多分支实现:
# 水果店打折活动
fruit = "apple" # 购买的水果:apple, banana, orange
quantity = 5 # 购买数量
if fruit == "apple":
price = 3 # 苹果每个3元
if quantity >= 10: # 嵌套if,苹果买10个以上打8折
total = price * quantity * 0.8
else:
total = price * quantity
elif fruit == "banana":
price = 2 # 香蕉每个2元
total = price * quantity # 香蕉不打折
elif fruit == "orange":
price = 4 # 橙子每个4元
if quantity >= 5: # 橙子买5个以上打9折
total = price * quantity * 0.9
else:
total = price * quantity
else:
print("本店没有这种水果")
total = 0
print("总价为:", total, "元")
这个例子展示了:多分支中可以嵌套 if-else,处理更复杂的条件。注意缩进层次要清晰。
试着修改 fruit 和 quantity 的值,看看输出结果有什么变化!
相关指引
学会了 if-elif-else,你还可以进一步学习:
- [Python 逻辑运算符
and、or、not] —— 在条件中组合多个判断 - [嵌套
if结构] —— 在条件内部再分支 - [条件表达式(三元运算符)] —— 简单的 if-else 可以写成一行
- [选择结构总结与习题] —— 通过练习巩固多分支的运用
多分支让程序更像人类的思考方式:面对多种可能性,只选择最匹配的一种去执行。掌握好顺序和缩进,你就能写出清晰又强大的判断逻辑了。
例题精讲
在Python的多分支选择结构中,若某条件满足后,后续的elif分支会怎样?
执行以下代码后,变量result的值是? x = 5 y = 10 if x > y: result = 'a' elif x == y: result = 'b' else: result = 'c'
在Python的if-elif-else结构中,else分支后面可以跟条件表达式,例如:else x > 0:
根据分数输出等级:90分及以上为'A',60分及以上为'B',60分以下为'C'。请补全代码:
score = 85
if score >= 90:
level = 'A'
___ score >= 60:
level = 'B'
else:
level = 'C'输入一个整数,判断它是正数、负数还是零。补全代码:
num = int(input())
if num > 0:
print('正数')
___ num < 0:
print('负数')
else:
print('零')