第3章中例子9的程序允许用户在键盘依次输入若干个数字(每输入一个数字都需要按回车键确认),程序将计算出这些数的和以及平均值。请在第3章的例子9中自定义异常类ScoreException,增加try-catch语句,当用户输入的数字大于100或小于0时,提示“数*是一个非法的成绩数据”。
时间: 2024-02-21 21:58:57 浏览: 136
好的,我理解了你的要求。下面是修改后的代码:
```python
class ScoreException(Exception):
def __init__(self, score):
self.score = score
def __str__(self):
return f"数{self.score}是一个非法的成绩数据"
try:
scores = []
while True:
score = input("请输入一个成绩(按Q结束):")
if score.upper() == "Q":
break
score = float(score)
if score < 0 or score > 100:
raise ScoreException(score)
scores.append(score)
print(f"共输入了{len(scores)}个成绩,总分是{sum(scores)},平均分是{sum(scores)/len(scores)}")
except ScoreException as e:
print(e)
except ValueError:
print("输入的不是有效的数字")
except:
print("程序出错了")
```
在原来的程序中,我们在输入数字的时候只判断了是否是有效的数字,没有判断数字是否在合法的范围内。现在我们新增了一个自定义异常类`ScoreException`,当输入的数字不在合法范围内时,抛出这个异常。
在`try`语句中,我们增加了一个`except ScoreException`语句,用来捕获这个自定义异常。如果捕获到了这个异常,就会执行`print(e)`语句,输出异常信息。
这样,当用户输入的数字不在合法范围内时,程序会输出提示信息,而不是直接崩溃。
阅读全文