n个人分配100元,用户输入n,输出每个人所分数额(保留两位小数)。如果发生异常Zero Division Error错误,则输出Error0;如果输入负整数,则输出Error1;其他错误异常,则输出Error2。最后无论是否发出异常,都输出over。要求用try语句处理部分异常
时间: 2023-07-15 07:15:23 浏览: 39
可以使用 try-except 语句来处理输入的异常情况,代码如下:
```
try:
n = int(input("请输入人数:"))
if n <= 0:
raise ValueError("人数必须大于0")
money = 100.0 / n
print("每个人分得:{:.2f}".format(money))
except ZeroDivisionError:
print("Error0")
except ValueError as e:
print("Error1:", e)
except:
print("Error2")
finally:
print("over")
```
首先尝试将输入的字符串转换为整数,如果转换失败则抛出 ValueError 异常,表示输入的不是整数。如果人数小于等于 0,则手动抛出 ValueError 异常,表示输入的人数不合法。计算每个人分得的金额,如果分母为 0 则会触发 ZeroDivisionError 异常,表示分配不合理。如果发生其他异常,则会触发 except 中的代码块。最后无论是否发生异常,都会执行 finally 中的代码,输出 over。
例如,当输入 n=0 时,输出如下:
```
Error1: 人数必须大于0
over
```
当输入 n=5 时,输出如下:
```
每个人分得:20.00
over
```
当输入非整数时,输出如下:
```
Error2
over
```
相关问题
n个人分配100元,用户输入由n不同取值构成的列表,输出各种情况每人所分数额(分行输出,保留两位小数)。如果发生Zero Division Error则输出can’t be 0;其他错误输出Error。列表元素处理完毕后输出over。要求用try语句处理
以下是使用 try 语句处理输入列表元素的 Python 代码:
```python
try:
n = int(input("请输入人数:"))
nums = input("请输入由n个不同取值构成的列表,以空格分隔:").split()
nums = [int(num) for num in nums]
total = sum(nums)
if total == 0:
raise ZeroDivisionError("can't be 0")
for i in range(n):
print("第{}个人分得:{:.2f}".format(i+1, nums[i]/total*100))
except ZeroDivisionError as e:
print(e)
except Exception:
print("Error")
finally:
print("over")
```
在上面的代码中,我们首先使用 `try` 语句包裹了整个程序,这样可以捕获所有可能发生的错误。在 `try` 代码块中,我们先输入人数 `n` 和列表元素 `nums`,并将 `nums` 转换为整数类型的列表。然后计算总分数 `total`,如果 `total` 等于 0,则抛出 `ZeroDivisionError` 异常,表示不能除以 0。接下来使用循环输出每个人分得的分数。
在 `try` 代码块中,我们还添加了两个 `except` 语句,用于处理可能发生的异常。如果捕获到 `ZeroDivisionError` 异常,则输出错误信息;否则如果捕获到其他异常,则输出 "Error"。最后,我们使用 `finally` 代码块输出 "over",表示程序执行完毕。
本题目要求读入2个整数a和b,然后输出它们的商 ,即a/b的值,正常输出结果并保留2位小数,如果出现输入非数值型数据,则捕获异常NameError,并输出the input is not numerical,如果输入的除数b为0,则捕获异常ZeroDivisionError,输出zero division error
以下是Python的代码实现:
```python
try:
a = int(input())
b = int(input())
result = a / b
print('%.2f' % result)
except NameError:
print('the input is not numerical')
except ZeroDivisionError:
print('zero division error')
```
首先,我们使用`try`语句来捕获可能出现的异常。然后,读入2个整数a和b,并计算它们的商`result`。在输出结果时,我们使用`'%.2f' % result`格式化输出,保留2位小数。
如果读入的数据出现非数值型错误,即`a`或`b`无法转换为整数,会抛出`NameError`异常,此时我们需要输出`the input is not numerical`。
如果输入的除数`b`为0,会抛出`ZeroDivisionError`异常,此时我们需要输出`zero division error`。