建立Person类,包含姓名,年龄信息,教师类和工人类继承Person类,分别含有任职学校;工龄。输入操作次数n,接下来n行输入“类型 姓名 年龄 特有参数”,中间以空格分隔,最后输入查询职业,按行按输入顺序输出该职业的人的信息,格式为“工人某某,多少岁,工龄多少年”或者“教师某某,多少岁,在某校教书”,或”NOT FOUND”
时间: 2023-11-24 11:05:57 浏览: 25
以下是一个可能的实现:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
class Teacher(Person):
def __init__(self, name, age, school):
super().__init__(name, age)
self.school = school
class Worker(Person):
def __init__(self, name, age, work_years):
super().__init__(name, age)
self.work_years = work_years
n = int(input())
people = []
for i in range(n):
type, name, age, *args = input().split()
age = int(age)
if type == '教师':
school = args[0]
people.append(Teacher(name, age, school))
elif type == '工人':
work_years = int(args[0])
people.append(Worker(name, age, work_years))
job = input()
found = False
for person in people:
if isinstance(person, Teacher) and job == '教师':
print(f"教师{person.name},{person.age}岁,在{person.school}教书")
found = True
elif isinstance(person, Worker) and job == '工人':
print(f"工人{person.name},{person.age}岁,工龄{person.work_years}年")
found = True
if not found:
print("NOT FOUND")
```
这个程序首先定义了一个 `Person` 类,包含姓名和年龄属性,然后定义了 `Teacher` 和 `Worker` 类,它们分别继承自 `Person` 类,但是还有额外的属性:`Teacher` 类有学校属性,`Worker` 类有工龄属性。
接下来,程序读入操作次数 n,然后循环 n 次,每次读入一个人的信息,并根据类型创建一个 `Teacher` 或 `Worker` 对象,加入到 `people` 列表中。
最后,程序读入要查询的职业,遍历 `people` 列表,对于每个对象,判断它是否属于要查询的职业,如果是,就输出相应的信息,并将 `found` 标志设为 True。如果遍历完成后 `found` 还是 False,说明没有找到对应职业的人,输出 "NOT FOUND"。