编写一个程序进行一个班某门课程成绩的录入,能够控制录入成绩总人数,对录入成绩统计其及格人数和不及格人数。设计一个异常类,当输入的成绩小0分或大于100分时,抛出该异常类对象,程序将捕捉这个异常对象,并调用执行该异常类对象的toString()方法,该方法获取当前无效分数值,并返回一个此分数无效的字符串。
时间: 2024-03-25 09:39:44 浏览: 15
好的,根据您的要求,我可以为您提供一个 Python 的程序示例:
```python
class ScoreError(Exception):
def __init__(self, score):
self.score = score
def __str__(self):
return f"Invalid score: {self.score}"
def input_scores():
n = int(input("Please input the total number of students: "))
scores = []
for i in range(n):
while True:
try:
score = int(input(f"Please input the score of student {i+1}: "))
if score < 0 or score > 100:
raise ScoreError(score)
break
except ValueError:
print("Invalid input, please input an integer.")
except ScoreError as e:
print(e)
scores.append(score)
return scores
def count_pass_fail(scores):
pass_num = 0
fail_num = 0
for score in scores:
if score >= 60:
pass_num += 1
else:
fail_num += 1
return pass_num, fail_num
if __name__ == '__main__':
scores = input_scores()
pass_num, fail_num = count_pass_fail(scores)
print(f"Pass: {pass_num}, Fail: {fail_num}")
```
程序首先定义了一个 `ScoreError` 异常类,用于在输入无效分数时抛出异常。在 `input_scores` 函数中,程序通过循环读取用户输入的分数,并使用 `try-except` 语句捕捉无效输入和 `ScoreError` 异常。如果输入的分数小于 0 或大于 100,程序会抛出 `ScoreError` 异常,并打印出错信息。如果输入的分数合法,则将其添加到 `scores` 列表中。
在 `count_pass_fail` 函数中,程序遍历 `scores` 列表,统计及格和不及格人数,并返回结果。
在主程序中,程序先调用 `input_scores` 函数获取成绩列表,然后调用 `count_pass_fail` 函数统计及格和不及格人数,并打印结果。
您可以根据需要修改程序中的提示信息和异常类的定义。