实验 3:编写异常处理程序。 要求:输入姓名和月工资计算年薪,如果输入格式不正确则抛出异常。 提示:程序中的异常可能来自两个方面,一是输入工资信息时输入了非数字格式,会抛出 NameError 或 SyntaxError 异常;二是输入工资范围不正确,如输入了负值或数值太大,这 是一个用户自定义的异常
时间: 2024-02-05 12:11:31 浏览: 24
以下是一个实现上述要求的 Python 异常处理程序:
```python
class InvalidSalaryRange(Exception):
pass
def calculate_annual_salary(name, monthly_salary):
try:
monthly_salary = float(monthly_salary)
except (NameError, SyntaxError):
raise ValueError("Invalid salary format")
if monthly_salary < 0 or monthly_salary > 100000:
raise InvalidSalaryRange("Salary should be between 0 and 100000")
annual_salary = monthly_salary * 12
return f"{name}'s annual salary is {annual_salary:.2f}"
# 示例用法
try:
name = input("请输入姓名:")
salary = input("请输入月工资:")
result = calculate_annual_salary(name, salary)
print(result)
except ValueError as e:
print(e)
except InvalidSalaryRange as e:
print(e)
```
该程序定义了一个自定义异常类 `InvalidSalaryRange`,用于处理输入工资范围不正确的情况。同时,使用 `try...except` 语句捕获了可能出现的 `NameError` 和 `SyntaxError` 异常,用 `ValueError` 异常替代。最后,程序在调用 `calculate_annual_salary` 函数时使用了 `try...except` 语句捕获了可能出现的异常,并输出相应的错误信息。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)