根据学生成绩判断等级
输入一个学生的语文、数学、英语成绩,都是整数。计算这
三个成绩的平均成绩。然后根据平均成绩的范围判断学生的成绩
等级。如果平均成绩大于等于 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. 编写一个函数,传入三科成绩,返回等级字符串,并在主程序中调用。