CC++ & Algorithm

if-elif-else分支语句

中等0
语言版本:C++
概述:根据条件选择不同的路走,就像十字路口的指示灯。

如果你遇到岔路口——认识 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 后面写条件,条件可以是布尔值,也可以是计算结果为 TrueFalse 的表达式。
  • 条件后面必须跟一个 英文冒号 :
  • 冒号下面要执行的代码必须 缩进(一般按一次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. 新手最容易犯的四个错误

  1. 忘记冒号
    if score >= 90 后面少了 : → 语法错误。
    正确if score >= 90:

  2. 缩进不一致或乱用空格
    比如 print("优秀") 前面少缩进了,或者混用Tab和空格。
    建议:整个代码块统一用Tab或4个空格,别混用。

  3. elif 写成 else if
    在Python里 else if 是错的,必须连在一起写 elif

  4. 条件顺序写反(就像前面温度那个例子)
    记住:把最可能成立的条件写到前面(如果条件有包含关系,最严格的条件放最前面)。

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:在 ifelifelse 的代码块里再写 if(比如上面示例中,判断总价后又对折扣做了分支)
  • switch-case 的替代:Python没有 switch,但可以用 if-elif-else 实现相同的效果。

掌握了分支语句,你的程序就能像人一样“见风使舵”啦!试着用 if-elif-else 写一个判断闰年的程序吧(规则:能被4整除但不能被100整除,或者能被400整除)。

例题精讲

1单选题

执行以下代码,输出结果是? x = 5 if x > 5: print('A') elif x == 5: print('B') else: print('C')

AA
BB
CC
D无输出
2单选题

执行以下代码,输出结果是? if 0: print('yes') else: print('no')

Ayes
Bno
C0
D报错
3判断题

在 if-elif-else 结构中,如果多个条件同时为真,则所有满足条件的分支都会被执行。

4判断题

在 Python 中,if 语句的条件表达式后面必须加上冒号(:)。

5填空题
根据分数输出等级: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)