3、录入一个学生的成绩(百分制),成绩应在[0,100]范围内。要求:自定义异常类,当输入成绩为非数字,或不在[0,100]范围内,使用raise抛出异常,并且使用try...except处理异常。
时间: 2024-10-24 19:04:01 浏览: 36
在Python中,你可以创建一个自定义异常类来处理特定的情况,如非数字输入或成绩超出范围。首先,你需要定义一个异常类,通常继承自内置的`Exception`类或其子类。然后,在尝试处理学生成绩的时候,你可以用`try/except`块来捕获并处理可能发生的错误。
这是一个例子:
```python
class InvalidScoreError(Exception):
"""自定义异常类,用于处理无效的学生成绩"""
def __init__(self, message="输入的成绩无效,请确保在0到100之间"):
self.message = message
super().__init__(self.message)
def enter_score():
try:
score = float(input("请输入学生的成绩(百分制): "))
if not (0 <= score <= 100):
raise InvalidScoreError
except ValueError:
# 捕获非数字输入
print("输入错误!成绩必须是数字。")
enter_score() # 如果是非数字,重新尝试输入
except InvalidScoreError as e:
# 捕获成绩超出范围
print(e)
enter_score()
else:
print(f"学生的成绩是:{score}")
enter_score()
```
在这个代码示例中,`InvalidScoreError`类用来表示成绩输入的问题。`try`块里尝试获取用户的输入并转换成浮点数,如果输入不是数字或者分数不在指定范围内,就会引发对应的异常。`except ValueError`处理非数字输入情况,而`except InvalidScoreError`则捕获我们自定义的异常。如果一切正常,程序会输出学生的成绩。如果在尝试过程中发生异常,程序会停止当前操作并重新请求输入。
阅读全文