要求:输入姓名和月工资计算年薪,如果输入格式不正确则抛出异常。 提示:程序中的异常可能来自两个方面,一是输入工资信息时输入了非数字格式,会抛出 NameError 或 SyntaxError 异常;二是输入工资范围不正确,如输入了负值或数值太大,这 是一个用户自定义的异常。
时间: 2024-03-14 12:45:44 浏览: 21
好的,你的问题是如何使用 Python 编写一个程序,输入姓名和月工资,计算年薪,并在输入格式不正确时抛出异常。
以下是一个 Python 程序的示例,实现了你的要求:
```python
class SalaryError(Exception):
pass
def calculate_annual_salary(name, monthly_salary):
try:
monthly_salary = float(monthly_salary)
except (NameError, SyntaxError, ValueError):
raise ValueError("月工资必须为数字")
if monthly_salary < 0:
raise SalaryError("月工资不能为负数")
if monthly_salary > 1000000:
raise SalaryError("月工资不能超过1000000")
annual_salary = monthly_salary * 12
return f"{name}的年薪为{annual_salary:.2f}元"
# 测试
try:
name = input("请输入姓名:")
monthly_salary = input("请输入月工资:")
print(calculate_annual_salary(name, monthly_salary))
except ValueError as e:
print(f"输入格式不正确:{e}")
except SalaryError as e:
print(f"输入工资范围不正确:{e}")
except Exception as e:
print(f"程序出错:{e}")
```
程序中定义了一个自定义的异常 `SalaryError`,用于处理输入工资范围不正确的异常。`calculate_annual_salary` 函数首先尝试将输入的月工资转换为浮点数,如果转换失败则抛出 `ValueError` 异常;然后判断月工资是否小于 0 或超过 1000000,如果是则抛出 `SalaryError` 异常;否则计算年薪并返回结果。
在测试代码中,使用 `try-except` 语句捕获可能抛出的异常,并进行相应的处理。
希望能够帮助到你,如果有任何问题请告诉我。