CC++ & Algorithm

Python 多分支 if-elif-else

中等6
语言版本:C++Python
概述:当需要从多个条件中选择一个时,用 if-elif-else 就像做多选一的题目,每个条件都检查一遍。

Python多分支选择:if-elif-else的详细用法

在生活中,我们经常面对多于两种的选择。比如,根据考试成绩给不同的评语、根据天气穿不同的衣服、根据红绿灯决定是否过马路。Python 的 if-elif-else 语句就是专门用来处理这种“多选一”情况的——它会从上到下依次检查每个条件,一旦发现某个条件成立,就执行对应的代码,然后跳过后面所有的条件。

基本结构:if、elif、else

  • if 后面写第一个条件,条件为真时执行它的代码块。
  • elif 是 “else if” 的缩写,可以写多个,每个后面跟一个新的条件。
  • else 是可选的,表示前面所有条件都不满足时执行的代码块。
  • 每个 ifelif 后面必须有冒号 :,对应的代码块要缩进(一般用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 时,输出“穿长袖”。如果你把条件顺序调成从低温开始,结果就会出错。

新手常犯的错误

  1. 忘记冒号ifelif 后面忘了加 :,Python 会报语法错误。
  2. 缩进不一致:同一个代码块内的语句必须对齐。有人混用 Tab 和空格,导致报错。
  3. 条件顺序搞反:把宽泛的条件放在前面,导致后面的条件永远没机会执行。
  4. 写了多个 else:一个 if 结构里只能有一个 else,否则会报错。
  5. 混淆 elifelseelse 后面不能再跟条件,也不能再写冒号后的表达式。正确的写法是 else:,然后缩进写代码。
  6. 所有条件都写成 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,处理更复杂的条件。注意缩进层次要清晰。

试着修改 fruitquantity 的值,看看输出结果有什么变化!

相关指引

学会了 if-elif-else,你还可以进一步学习:

  • [Python 逻辑运算符 andornot] —— 在条件中组合多个判断
  • [嵌套 if 结构] —— 在条件内部再分支
  • [条件表达式(三元运算符)] —— 简单的 if-else 可以写成一行
  • [选择结构总结与习题] —— 通过练习巩固多分支的运用

多分支让程序更像人类的思考方式:面对多种可能性,只选择最匹配的一种去执行。掌握好顺序和缩进,你就能写出清晰又强大的判断逻辑了。

例题精讲

1单选题

在Python的多分支选择结构中,若某条件满足后,后续的elif分支会怎样?

A继续检查后续所有分支
B不再检查后续任何分支
C只检查下一个分支
D跳过else分支,但继续检查elif
2单选题

执行以下代码后,变量result的值是? x = 5 y = 10 if x > y: result = 'a' elif x == y: result = 'b' else: result = 'c'

A'a'
B'b'
C'c'
D报错
3判断题

在Python的if-elif-else结构中,else分支后面可以跟条件表达式,例如:else x > 0:

4填空题
根据分数输出等级:90分及以上为'A',60分及以上为'B',60分以下为'C'。请补全代码:
score = 85
if score >= 90:
    level = 'A'
___ score >= 60:
    level = 'B'
else:
    level = 'C'
5填空题
输入一个整数,判断它是正数、负数还是零。补全代码:
num = int(input())
if num > 0:
    print('正数')
___ num < 0:
    print('负数')
else:
    print('零')