n个人平均分配100元钱,用户输入由n不同取值构成的列表,输出各种情况每人所分数额(分行输出,保留2位小数)。如果发生ZeroDivisionError则输出can’t be 0;其他错误则输出Error。列表处理完毕后输出over.要求:用try语句处理异常。
时间: 2024-02-16 16:03:12 浏览: 56
好的,我可以为你解决这个问题。以下是代码实现:
```python
while True:
try:
n_list = input("请输入由n不同取值构成的列表(以逗号分隔): ")
n_list = [int(i) for i in n_list.split(',')] # 将输入字符串转换成列表
break
except ValueError:
print("Error: 输入的列表元素必须为整数!")
except:
print("Error: 输入的列表格式不正确!")
for n in n_list:
try:
avg_money = round(100 / n, 2) # 计算每人分得的钱数,保留2位小数
print("当有{}个人时,每人分得{}元。".format(n, avg_money))
except ZeroDivisionError:
print("当有{}个人时,can't be 0。".format(n))
except:
print("Error")
print("over")
```
代码中使用了两个try语句,第一个用于处理输入的异常,第二个用于处理计算平均值时可能出现的异常。如果出现了ZeroDivisionError,则说明n等于0,输出can't be 0;如果出现其他异常,则输出Error。如果所有的列表元素都处理完成,则输出over。
希望这个代码能够帮到你。如果你还有其他问题,可以继续问我。
阅读全文