录⼊⼀个学⽣的成绩,把该学⽣的成绩转换为 A 优秀、B 良好、C 合格、D 不及格的形式,最后将该学⽣的成绩打印出来。要求使用assert断言处理分数不合理(小于0或者大于100)的情况,对输入成绩不合法的异常(ValueError),以及assert 断⾔异常进行处理,请编写程序实现。
时间: 2023-06-13 22:02:32 浏览: 458
下面是一个可能的实现,我们使用了 assert 断言来检查输入成绩的合法性,如果成绩不合理会抛出 AssertionError 异常。同时使用 try-except 语句来处理输入成绩不合法的异常和 assert 断言异常。
```python
def convert_score(score):
assert 0 <= score <= 100, "成绩必须在 0 到 100 之间"
if score >= 90:
return "A 优秀"
elif score >= 80:
return "B 良好"
elif score >= 60:
return "C 合格"
else:
return "D 不及格"
try:
score = float(input("请输入学生的成绩:"))
print(convert_score(score))
except ValueError:
print("输入成绩不合法,请输入一个有效的数字")
except AssertionError as e:
print(e)
```
在这个程序中,我们首先定义了一个 convert_score 函数,用于将成绩转换为相应的等级。在函数内部,我们使用 assert 断言来检查成绩的合法性。如果成绩不合理,就会抛出 AssertionError 异常,程序会终止执行。
在主程序中,我们使用 try-except 语句来处理输入成绩不合法的异常和 assert 断言异常。如果用户输入的成绩无法转换为一个有效的数字,就会抛出 ValueError 异常,程序会提示用户输入一个有效的数字。如果用户输入的成绩超出了合法范围,就会抛出 AssertionError 异常,程序会提示用户输入一个在 0 到 100 之间的数字。
如果输入的成绩合法,程序会调用 convert_score 函数将成绩转换为相应的等级,并打印输出。
阅读全文