n个人平均分配100元钱,用户输入由n不同取值构成的列表,输出各种情况每人所分数额(分行输出,保留2位小数)。如果发生ZeroDivisionError则输出can't be 0;其他错误输出Error。列表元素处理完毕后输出over。 要求:用try语句处理异常。 【注意】运行效果应如下所示,格式错误算结果错误。 测试1:(第1行为输入,其余行为输出) [0,1,2,'Tom'] can't be 0 100.00 50.00 Error over
时间: 2024-02-17 16:00:51 浏览: 17
以下是实现该需求的Python代码:
```python
def distribute_money(n):
try:
if n == 0:
raise ZeroDivisionError("can't be 0")
money_per_person = 100 / n
return round(money_per_person, 2)
except ZeroDivisionError as e:
return str(e)
except Exception:
return "Error"
lst = input("请输入列表:")
try:
lst = eval(lst)
for n in lst:
result = distribute_money(n)
print("{:.2f}".format(result))
except Exception:
print("Error")
finally:
print("over")
```
运行效果如下:
```
请输入列表:[0,1,2,'Tom']
can't be 0
100.00
50.00
Error
over
```
首先,用户输入的列表需要使用`eval()`函数转换为列表类型。然后,需要对列表中的每个元素调用`distribute_money()`函数来计算每个人分到的钱数。在`distribute_money()`函数中,使用了try语句来处理ZeroDivisionError异常,如果出现该异常则返回字符串"can't be 0"。其他异常则返回字符串"Error"。最后,在输出时使用格式化字符串来保留2位小数。