当前位置:首页>python>跟着学python--第五题

跟着学python--第五题

  • 2026-09-08 09:11:37
跟着学python--第五题

根据学生成绩判断等级

输入一个学生的语文、数学、英语成绩,都是整数。计算这

三个成绩的平均成绩。然后根据平均成绩的范围判断学生的成绩

等级。如果平均成绩大于等于 90 分,输出 “优秀”;如果平均

成绩大于等于 80 分小于 90 分,输出 “良好”;如果平均成绩

大于等于 60 分小于 80 分,输出 “及格”;如果平均成绩小于

60 分,输出 “不及格”。

示例输入:85 90 88

示例输出:良好。

【1. 教学目标】

- 掌握Python基本输入输出(`input()`、`print()`)。

- 掌握数据类型转换(`int()`)。

- 掌握算术运算(求和、平均)。

- 掌握多分支条件判断(`if-elif-else`)。

- 培养问题分解与算法设计能力。

【 2. 问题描述】

输入一个学生的**语文、数学、英语**三科成绩(整数)。  

计算三科**平均成绩**,并按以下规则输出等级:

| 平均成绩范围 | 等级 |

|--------------|------|

| ≥ 90         | 优秀 |

| 80 ≤ < 90   | 良好 |

| 60 ≤ < 80   | 及格 |

| < 60        | 不及格 |

**示例**  

输入:`85 90 88`  

输出:`良好`

【3. 问题分析(拆解步骤)】

1. **获取输入**:用户在一行内输入三个整数,以空格分隔。

2. **处理输入**:将字符串分割为三个部分,并转换为整数。

3. **计算平均分**:`(语文 + 数学 + 英语) / 3`。

4. **判断等级**:根据平均分落在哪个区间,决定输出内容。

5. **输出结果**:打印对应的等级字符串。

【4. 算法设计(流程图 / 伪代码)】

 伪代码

```

开始

  输入一行字符串,存入变量 s

  按空格分割 s,得到三个字符串

  将三个字符串转换为整数,分别赋值给 chinese, math, english

  average = (chinese + math + english) / 3

  如果 average >= 90:

      输出 "优秀"

  否则如果 average >= 80:

      输出 "良好"

  否则如果 average >= 60:

      输出 "及格"

  否则:

      输出 "不及格"

结束

```

【流程图(文字描述)】

- 开始 → 输入成绩 → 计算平均分 → 判断条件分支 → 输出对应等级 → 结束

【 5. 代码实现(完整代码)】

# 获取用户输入(三个整数,用空格分隔)s = input("请输入语文、数学、英语成绩(用空格分隔):")# 分割字符串并转换为整数chinese, math, english = map(int, s.split())# 计算平均成绩average = (chinese + math + english) / 3# 判断等级并输出if average >= 90:    print("优秀")elif average >= 80:    print("良好")elif average >= 60:    print("及格")else:    print("不及格")

【 6. 代码逐行解释(教学重点)】

| 代码 | 说明 |

|------|------|

| `input(...)` | 提示用户输入,返回字符串 |

| `s.split()` | 按空格拆分字符串,返回列表 |

| `map(int, ...)` | 将列表中的每个元素转换为整数 |

| `chinese, math, english = ...` | 解包赋值,分别获取三科成绩 |

| `/ 3` | 浮点数除法,得到精确平均分 |

| `if-elif-else` | 多分支判断,**注意顺序**:从高分到低分 |

| `print(...)` | 输出最终等级 |

【7. 边界测试用例(验证正确性)】

| 输入 | 平均分 | 预期输出 | 测试目的 |

|------|--------|----------|----------|

| 100 100 100 | 100 | 优秀 | 满分边界 |

| 90 90 90   | 90   | 优秀 | ≥90边界 |

| 89 90 88   | 89   | 良好 | 80-89边界 |

| 80 80 80   | 80   | 良好 | ≥80边界 |

| 79 80 78   | 79   | 及格 | 60-79边界 |

| 60 60 60   | 60   | 及格 | ≥60边界 |

| 59 60 58   | 59   | 不及格 | <60边界 |

| 0 0 0      | 0    | 不及格 | 最小值边界 |

【8. 常见错误与调试(易错点提醒)】

- **忘记类型转换**:`input()`返回字符串,直接相加会拼接,需用`int()`。

- **除法结果类型**:`/` 得到浮点数,但比较时与整数比较无影响。

- **条件顺序错误**:若先写 `average >= 80` 再写 `average >= 90`,则 `90` 会被误判为“良好”,必须从大到小。

- **输入格式不符**:若输入多余空格或非数字,程序会报错(可在进阶中增加异常处理)。

【 9. 扩展与思考(提升训练)】

- **扩展1**:增加对输入合法性的校验(如成绩必须在0~100之间)。

- **扩展2**:使用 `round(average, 2)` 保留两位小数输出平均分。

- **扩展3**:改为函数形式 `def get_grade(avg): ...`,提高代码复用性。

- **扩展4**:支持多学生批量处理(循环)。

【 10. 课堂练习任务】

1. 修改程序,让用户先输入姓名,再输入成绩,输出“姓名 + 等级”。

2. 将等级判断改为使用 `match-case`(Python 3.10+)实现。

3. 编写一个函数,传入三科成绩,返回等级字符串,并在主程序中调用。

最新文章

随机文章