程序允许用户在键盘依次输入若干个数字(每输入一个数字都需要按回车键确认),程序将计算出这些数的和以及平均值。请在第3章的例子9中自定义异常类ScoreException,增加try-catch语句,当用户输入的数字大于100或小于0时,提示“数*是一个非法的成绩数据”。 编程说明
时间: 2024-02-21 16:00:37 浏览: 88
从键盘输入十个整数,合法值为1.2或3,不是这三个数则为非法数字,试编程统计每个整数和非法数字的个数。
首先,我们需要定义一个自定义异常类ScoreException,用于捕获输入的数字大于100或小于0的异常情况。代码如下:
```python
class ScoreException(Exception):
pass
```
接下来,我们可以使用try-catch语句来捕获这个异常,代码如下:
```python
sum = 0
count = 0
while True:
try:
score = int(input("请输入一个成绩:"))
if score < 0 or score > 100:
raise ScoreException("数{}是一个非法的成绩数据".format(score))
sum += score
count += 1
except ScoreException as e:
print(e)
except ValueError:
print("请输入一个有效的数字!")
else:
if input("是否继续输入?(Y/N)").upper() == 'N':
break
if count == 0:
print("没有输入任何成绩!")
else:
print("总成绩为{},平均成绩为{}".format(sum, sum/count))
```
在上面的代码中,我们首先使用了一个while循环,不断从键盘输入数字,直到用户不再输入为止。在每次输入数字时,我们使用try-catch语句来捕获可能出现的异常情况。如果输入的数字大于100或小于0,则会抛出我们自定义的ScoreException异常,提示用户输入的数字是非法的。如果输入的不是数字,则会抛出ValueError异常,提示用户输入的是一个无效的数字。
如果没有抛出异常,则说明输入的数字是合法的,我们就将其累加到总成绩sum中,并将计数器count加1。最后,如果用户输入了N,则跳出while循环,计算出总成绩和平均成绩,并输出结果。如果用户没有输入任何成绩,则输出提示信息。
阅读全文