编写一个程序进行一个班某门课程成绩的录入,能够控制录入成绩总人数,对录入成绩统计其及格人数和不及格人数。设计一个异常类,当输入的成绩小0分或大于100分时,抛出该异常类对象,程序将捕捉这个异常对象,并调用执行该异常类对象的toString()方法,该方法获取当前无效分数值,并返回一个此分数无效的字符串。
时间: 2024-03-25 19:39:54 浏览: 97
好的,以下是 Python 的代码实现:
```python
class InvalidScoreError(Exception):
def __init__(self, score):
self.score = score
def __str__(self):
return f"Invalid score: {self.score}"
def input_scores(num_students):
passed = 0
failed = 0
for i in range(1, num_students+1):
while True:
try:
score = float(input(f"Enter score for student {i}: "))
if score < 0 or score > 100:
raise InvalidScoreError(score)
break
except ValueError:
print("Invalid input, please try again")
except InvalidScoreError as e:
print(e)
if score >= 60:
passed += 1
else:
failed += 1
print(f"Number of students passed: {passed}")
print(f"Number of students failed: {failed}")
# example usage
input_scores(5)
```
程序中定义了一个 `InvalidScoreError` 异常类,当输入的成绩小于 0 或大于 100 时,会抛出该异常对象。程序使用 `try-except` 语句捕捉这个异常,并调用 `__str__` 方法获取当前无效分数值,然后输出一个此分数无效的字符串。程序还使用了一个 `while` 循环来确保输入的成绩是有效的。
程序的主逻辑是 `input_scores` 函数,它使用一个 `for` 循环来依次录入每个学生的成绩,并统计及格人数和不及格人数。最后,程序输出及格人数和不及格人数。
阅读全文