输入某个班某门课程成绩,统计及格人数、不及格人数及课程平均分。设计一个异常类,当输入的成绩小于0或者大于100时抛出异常,程序将捕获这个异常,并作出相应处理。程序算法描述
时间: 2023-06-13 22:07:14 浏览: 253
算法描述如下:
1. 定义一个异常类,命名为 ScoreOutOfRangeError,继承自 Exception。
2. 定义一个函数,名为 statistics,接收一个列表类型的参数 scores。
3. 在 statistics 函数中,定义三个变量:passed_count、failed_count、total_score,初始值分别为 0。
4. 遍历 scores 列表中的所有成绩,如果成绩小于 0 或者大于 100,则抛出 ScoreOutOfRangeError 异常;否则,判断成绩是否及格,如果及格,则 passed_count 自增 1,否则 failed_count 自增 1,同时将成绩加入到 total_score 中。
5. 遍历完所有成绩后,计算课程平均分,即 total_score 除以总人数。
6. 返回一个元组类型的结果,包含三个元素:passed_count、failed_count、平均分。
7. 在调用 statistics 函数时,使用 try-except 语句捕获 ScoreOutOfRangeError 异常,输出错误信息,并返回 None。
Python 代码实现如下:
```python
class ScoreOutOfRangeError(Exception):
pass
def statistics(scores):
passed_count = failed_count = total_score = 0
for score in scores:
if score < 0 or score > 100:
raise ScoreOutOfRangeError("成绩不在合法范围内")
elif score >= 60:
passed_count += 1
else:
failed_count += 1
total_score += score
average_score = total_score / len(scores)
return passed_count, failed_count, average_score
try:
scores = [65, 78, 92, -1, 105, 80, 50, 75]
result = statistics(scores)
print("及格人数:", result[0])
print("不及格人数:", result[1])
print("平均分:", result[2])
except ScoreOutOfRangeError as e:
print("错误信息:", e)
```
输出结果为:
```
错误信息: 成绩不在合法范围内
```