用python定义一个异常的类,输入自己的姓名,年龄(18-24),专业用字典形式存储包含try except else finally assert
时间: 2023-07-15 21:13:00 浏览: 40
以下是一个定义异常类并处理输入的示例代码:
```python
class InputError(Exception):
def __init__(self, message):
self.message = message
try:
name = input("请输入姓名:")
age = int(input("请输入年龄:"))
majors = {"Computer Science": "计算机科学", "Mathematics": "数学", "Physics": "物理学"}
major = input("请输入专业(Computer Science/Mathematics/Physics):")
if age < 18 or age > 24:
raise InputError("年龄必须在18到24岁之间!")
if major not in majors:
raise InputError("专业输入有误!")
except InputError as e:
print(e.message)
except ValueError:
print("年龄必须为整数!")
else:
print("姓名:", name)
print("年龄:", age)
print("专业:", majors[major])
finally:
print("输入结束。")
assert age >= 18 and age <= 24, "年龄必须在18到24岁之间!"
assert major in majors, "专业输入有误!"
```
代码的解释:
- 首先定义了一个名为 `InputError` 的异常类,用于处理输入错误的情况;
- 使用 `try` 语句包含需要进行异常处理的代码块;
- `input` 函数用于获取用户输入的姓名、年龄和专业;
- 如果年龄不在18到24岁之间,就会抛出一个 `InputError` 异常;
- 如果专业不在预设的三个专业(计算机科学、数学、物理学)之内,也会抛出一个 `InputError` 异常;
- 如果输入的年龄不是整数,就会抛出一个 `ValueError` 异常;
- 如果没有抛出任何异常,就会执行 `else` 语句块中的代码,输出姓名、年龄和专业的信息;
- 最后使用 `finally` 语句块输出一个提示信息,并使用 `assert` 断言函数确保输入的年龄和专业在正确的范围内。如果断言失败,就会抛出一个 `AssertionError` 异常。