当前位置:首页>python>一起学Python(006):分支控制结构让程序学会“做选择”@成绩评定案例

一起学Python(006):分支控制结构让程序学会“做选择”@成绩评定案例

  • 2026-09-02 19:54:35
一起学Python(006):分支控制结构让程序学会“做选择”@成绩评定案例

你有没有想过,为什么程序能根据不同情况做出不同反应?比如输入密码时,对了就登录成功,错了就提示错误——这就是分支控制结构的功劳。

今天,我们就通过一个“成绩评定”的互动案例,从零开始,一步步深入,彻底搞懂分支结构的逻辑。

最简单的分支:if语句

我们先从一个最简单的场景开始:判断成绩是否及格。

score = int(input("请输入你的成绩:"))  # 获取用户输入并转换为整数

if score >= 60:                         # 如果成绩大于等于60

    print("及格了!")                    # 就输出“及格了!”

运行示例

请输入你的成绩:75

及格了!

请输入你的成绩:55

(什么也不输出)

这段代码的问题在于当成绩55分时,程序什么也不输出,体验不好。如果不及格,也应该给个反馈。

双向选择:if-else语句

当成绩不及格时,我们也想给个提示。这时就需要if-else结构。

score = int(input("请输入你的成绩:"))  # 获取用户输入并转换为整数

if score >= 60:                         # 如果成绩大于等于60

    print("及格了!")                    # 就输出“及格了!”

else:                                   # 否则(成绩小于60)

    print("不及格,下次加油!")           # 输出“不及格,下次加油!”

运行示例

请输入你的成绩:75

及格了!

请输入你的成绩:55

不及格,下次加油!

现在,无论成绩如何,程序都能给出反馈了。

多级判断:if-elif-else语句

只有及格和不及格,还不够精细。我们想要更详细的等级:优、良、中、差。这时就需要if-elif-else多分支结构。

score = int(input("请输入你的成绩:"))      # 获取用户输入并转换为整数

if score >= 90:                             # 如果成绩大于等于90

    print("优秀!")                          # 输出“优秀!”

elif score >= 80:                           # 否则如果成绩大于等于80

    print("良好!")                          # 输出“良好!”

elif score >= 70:                           # 否则如果成绩大于等于70

    print("中等")                           # 输出“中等”

elif score >= 60:                           # 否则如果成绩大于等于60

    print("及格")                           # 输出“及格”

else:                                       # 以上条件都不满足

    print("不及格,下次加油!")               # 输出“不及格”

运行示例

请输入你的成绩:85

良好!

请输入你的成绩:92

优秀!

请输入你的成绩:68

及格

请输入你的成绩:45

不及格,下次加油!

重要规则:条件是从上往下依次判断,只要有一个条件成立,执行完对应的代码后,立即跳出整个分支结构,后面的条件不会再检查。

进阶:嵌套分支

有时候,我们需要在某个分支内再做进一步判断。比如成绩及格后,还想根据具体分数给更细致的评价。

score = int(input("请输入你的成绩:"))      # 获取用户输入并转换为整数

if score >= 60:                             # 如果成绩大于等于60(及格)

    print("恭喜你及格了!")                  # 先输出一句恭喜

    # 在及格的情况下,进一步细分等级

    if score >= 90:                         # 如果成绩大于等于90

        print("成绩非常优秀!")              # 输出“成绩非常优秀!”

    elif score >= 80:                       # 否则如果成绩大于等于80

        print("成绩良好!")                  # 输出“成绩良好!”

    elif score >= 70:                       # 否则如果成绩大于等于70

        print("成绩中等")                   # 输出“成绩中等”

    else:                                   # 否则(成绩60-69之间)

        print("刚及格,继续努力!")          # 输出“刚及格,继续努力!”

else:                                       # 否则(成绩小于60)

    print("不及格,下次加油!")              # 输出“不及格”

运行示例

请输入你的成绩:85

恭喜你及格了!

成绩良好!

请输入你的成绩:62

恭喜你及格了!

刚及格,继续努力!

请输入你的成绩:48

不及格,下次加油!

完整版:带异常处理的成绩评定器

前面的程序有一个问题:如果用户输入的不是数字,程序会崩溃。我们来加上异常处理,让程序更健壮。

try:                                        # 尝试执行以下代码

    score = int(input("请输入你的成绩:"))   # 获取用户输入并转换为整数

    if score < 0:                           # 如果成绩小于0

        print("❌ 成绩不能为负数!")          # 输出错误提示

    elif score > 100:                       # 否则如果成绩大于100

        print("❌ 成绩不能超过100分!")       # 输出错误提示

    elif score >= 90:                       # 否则如果成绩大于等于90

        print("优秀!")                      # 输出“优秀!”

    elif score >= 80:                       # 否则如果成绩大于等于80

        print("良好!")                      # 输出“良好!”

    elif score >= 70:                       # 否则如果成绩大于等于70

        print("中等")                       # 输出“中等”

    elif score >= 60:                       # 否则如果成绩大于等于60

        print("及格")                       # 输出“及格”

    else:                                   # 以上条件都不满足(0-59之间)

        print("不及格,下次加油!")           # 输出“不及格”

except ValueError:                          # 如果发生ValueError(输入不是数字)

    print("❌ 请输入有效的数字!")            # 输出错误提示

运行示例

#正常情况

请输入你的成绩:85

良好!

#负数情况

请输入你的成绩:-10

❌ 成绩不能为负数!

#超过100的情况

请输入你的成绩:120

❌ 成绩不能超过100分!

#输入非数字的情况

请输入你的成绩:abc

❌ 请输入有效的数字!

代码逐行完整解释

第1部分:异常处理块

try:                                        # 尝试执行以下代码,如果出错就跳到except

第2部分:获取输入并转换

score = int(input("请输入你的成绩:"))   # input()获取用户输入的字符串,int()转换为整数,赋值给score

第3部分:边界条件检查

if score < 0:                           # 如果成绩小于0

    print("❌ 成绩不能为负数!")          # 输出错误提示

elif score > 100:                       # 否则如果成绩大于100

    print("❌ 成绩不能超过100分!")       # 输出错误提示

这两行先检查成绩是否在有效范围内(0-100)。注意:这里用了elif,因为负数和大于是互斥的。

第4部分:成绩等级判断

elif score >= 90:                       # 否则如果成绩大于等于90

    print("优秀!")                      # 输出“优秀!”

elif score >= 80:                       # 否则如果成绩大于等于80

    print("良好!")                      # 输出“良好!”

elif score >= 70:                       # 否则如果成绩大于等于70

    print("中等")                       # 输出“中等”

elif score >= 60:                       # 否则如果成绩大于等于60

    print("及格")                       # 输出“及格”

else:                                   # 以上条件都不满足(0-59之间)

    print("不及格,下次加油!")           # 输出“不及格”

注意顺序:从高到低判断,这样才能保证85分走到score >= 80的分支,而不是被score >= 60先截住。

第5部分:异常处理

except ValueError:                 # 如果try块中发生ValueError(比如int()转换失败)

    print("❌ 请输入有效的数字!")            # 输出错误提示

分支结构核心要点总结

1. 三种分支形式

形式
语法
适用场景
单分支
if条件:
只有一种情况需要处理
双分支
if条件:-else:
两种情况二选一
多分支
if条件:-elif条件:-else:
多种情况多选一

2. 两个重要规则

    冒号不能少:if、elif、else后面都要加冒号

    缩进要对齐:属于某个分支的代码必须缩进,Python用缩进表示代码块

3. 条件表达式

条件判断的结果是布尔值(True或False)

运算符
含义
示例
==
等于

score == 100

!=
不等于

score != 0

>
大于

score > 60

<
小于

score < 30

>=
大于等于

score >= 60

<=
小于等于

score <= 100

分支控制结构让程序有了“思考”能力:

if:如果满足条件,就做某事

elif:否则如果满足另一个条件,就做另一件事

else:如果都不满足,就做这件事

就像生活中的各种选择——如果饿了,就吃饭;如果不饿但渴了,就喝水;如果都不,就继续玩。

掌握好分支结构,你的程序就不再是“死脑筋”,而是能根据不同情况灵活应变,并且能优雅地处理各种意外输入,让程序更健壮、更专业!

动手试试吧

1. 基础题:修改程序,增加“优秀”的细分:90-94为“优秀”,95-100为“卓越”

2. 进阶题:增加一个条件,如果成绩是整数但不是百分制(比如101),提示“成绩无效”

3. 挑战题:增加一个功能,输入负数时,提示“成绩不能为负数”,并让用户重新输入(需要用到循环)

【上周答案公布】输出斐波那契数列项

练习1:输出斐波那契数列的前20项

n = 20

a, b = 0, 1

print("斐波那契数列的前20项是:")

for i in range(n):

    print(a, end=" ") 

    a, b=b, a+b

输出结果

练习2:输出斐波那契数列中所有小于2000的项

a, b = 0, 1                              # 初始化前两项:a是当前项,b是下一项

print("斐波那契数列中小于2000的项是:")   # 输出提示信息

while a < 2000:                           # 当当前项a小于2000时,继续循环

    print(a, end=" ")                     # 输出当前项a,end=" "表示不换行,用空格隔开

    a, b = b, a + b                       # 更新a和b:新的a等于旧的b,新的b等于旧的a加旧的b

print()                                   # 循环结束后换行

输出结果

练习3:找出第1个大于10000的斐波那契数

a, b = 0, 1                              # 初始化前两项:a是当前项,b是下一项

position = 1                              # 位置计数器,从第1项开始计数

while a <= 10000:                         # 当当前项a小于等于10000时,继续循环

    a, b = b, a + b                       # 更新a和b:新的a等于旧的b,新的b等于旧的a加旧的b

    position = position + 1               # 位置计数器加1

print("斐波那契数列中第1个大于10000的数是:")  # 输出提示信息

print(f"数值:{a}")                       # 输出找到的数(此时a已经大于10000)

print(f"位置:第{position}项")            # 输出这个数是第几项

输出结果

精彩回顾:

一起学Python(005):从斐波那契数列看循环控制结构

一起学Python(004):Python程序三种控制结构:顺序、分支和循环

一起学Python(003):Python代码书写规则:那些让程序崩溃的“小细节”

一起学Python(002):计算机的“数字秘密”——0和1如何统治世界?

一起学Python(001):为什么文科生也要学Python?

欢迎【点赞】+【转发】❤️

最新文章

随机文章