|
|
发表于 2026-5-16 20:16:20
|
显示全部楼层
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:
针对同一个函数/方法,根据传入的对象不同会有不同的结果
第 1 题的答案是:
可以直接封装好一段代码,然后调用不同类的对象可以实现不同的功能,一段代码就可以实现多种功能
第 2 题的答案是:
可以
第 3 题的答案是:
只要一只鸟走起来像鸭子,叫起来像鸭子,那么它就是鸭子
第 4 题的答案是:
增强了内聚
第 5 题的答案是:
属于,这里相当于传入了不同的对象能够有不同的结果
-------- 动动手 --------
请将第 0 题的代码写在下方:
class Staff:
def __init__(self, uid, name, job, grade, year):
self.uid = uid
self.name = name
self.job = job
self.grade = grade
self.year = year
def get_uid(self):
return self.uid
def get_name(self):
return self.name
def get_job(self):
return self.job
def get_grade(self):
return self.grade
def get_year(self):
return self.year
def get_salary(self):
pass
class Employee(Staff):
def __init__(self, uid, name, job, grade, year):
super().__init__(uid, name, job, grade, year)
def get_salary(self):
return 3000+500*self.grade+50*self.year
class Teamleader(Staff):
def __init__(self, uid, name, job, grade, year):
super().__init__(uid, name, job, grade, year)
def get_salary(self):
return 4000+800*self.grade+100*self.year
class Manager(Staff):
def __init__(self, uid, name, job, grade, year):
super().__init__(uid, name, job, grade, year)
def get_salary(self):
return 5000+1000*(self.grade+self.year)
def enter(staff_lis):
i = 0
while True:
uid = 10000 + i
name = input("姓名:")
job = input("职位(E.普通员工;T.组长;M.经理):")
year = int(input("工龄:"))
grade = int(input("级别:"))
if job == "E":
while grade > 10:
grade = int(input("该职位最高级别为10,请重新录入级别:"))
staff = Employee(uid, name, job, grade, year)
elif job == "T":
while grade > 6:
grade = int(input("该职位最高级别为6,请重新录入级别:"))
staff = Teamleader(uid, name, job, grade, year)
elif job == "M":
while grade > 3:
grade = int(input("该职位最高级别为3,请重新录入级别:"))
staff = Manager(uid, name, job, grade, year)
staff_lis.append(staff)
print(f"录入成功!姓名:{staff.name}, 工号:{staff.uid},薪资:{staff.get_salary()}")
yield staff
i += 1
def query(staff_lis):
cmd = int(input("1.员工查询;2.职位查询:"))
if cmd == 1:
uid_q = int(input("请输入工号:"))
sum = 0
for x in staff_lis:
if uid_q == x.uid:
sum += 1
print("姓名:", x.name)
print("职位:", x.job)
print("级别:", x.grade)
print("工龄:", x.year)
print("薪资:", x.get_salary())
if sum == 0:
print("该工号不存在!")
elif cmd == 2:
job_dic = {"E":"普通员工", "T":"组长", "M":"经理"}
job_q = input("职位(E.普通员工;T.组长;M.经理):")
job_name = job_dic[job_q]
staff_q_lis = [x for x in staff_lis if x.job == job_q]
if len(staff_q_lis) == 0:
print(f"目前公司没有{job_name}")
else:
print(f"目前{job_name}共有{len(staff_q_lis)}人")
for each in staff_q_lis:
print(f"{each.uid} - {each.name}")
def up(staff_lis):
uid = int(input("请输入工号:"))
sum = 0
for x in staff_lis:
if x.uid == uid:
index = staff_lis.index(x)
sum += 1
salary_org = x.get_salary()
print(x.name, "工号:", x.uid, "当前职位:", f"{x.job}", x.grade,
"当前薪资:", salary_org)
up_num = int(input("请输入需要增加的级数:"))
level = x.grade + up_num
if x.job == "E":
if level > 10:
x.grade = 1
x.job = "T"
staff_lis[index] = Teamleader(x.uid, x.name, x.job, x.grade, x.year)
x = staff_lis[index]
else:
x.grade = level
print("升级成功!")
elif x.job == "T":
if level > 6:
x.grade = 1
x.job = "M"
staff_lis[index] = Manager(x.uid, x.name, x.job, x.grade, x.year)
x = staff_lis[index]
else:
x.grade = level
print("升级成功!")
elif x.job == "M":
if x.grade == 3:
print("您已到最高级别,无法再升级")
elif level > 3:
x.grade = 3
print("升级成功!")
else:
x.grade = level
print("升级成功!")
print(x.name, "工号:", x.uid, "升级后职位:", f"{x.job}", x.grade,
"当前薪资:", x.get_salary(), f"(+{x.get_salary() - salary_org})")
if sum == 0:
print("查无此人")
def down(staff_lis):
uid = int(input("请输入工号:"))
sum = 0
for x in staff_lis:
if x.uid == uid:
index = staff_lis.index(x)
sum += 1
salary_org = x.get_salary()
print(x.name, "工号:", x.uid, "当前职位:", f"{x.job}:", x.grade,
"薪资:", salary_org)
down_num = int(input("请输入需要减少的级数:"))
level = x.grade - down_num
if x.job == "E":
if level <= 0:
x.grade = 1
x.job = "E"
else:
x.grade = level
print("降级成功!")
elif x.job == "T":
if level <= 0:
x.grade = 10
x.job = "E"
staff_lis[index] = Employee(x.uid, x.name, x.job, x.grade, x.year)
x = staff_lis[index]
else:
x.grade = level
print("降级成功!")
elif x.job == "M":
if level <= 0:
x.grade = 6
x.job = "T"
staff_lis[index] = Teamleader(x.uid, x.name, x.job, x.grade, x.year)
x = staff_lis[index]
else:
x.grade = level
print("降级成功!")
print(x.name, "工号:", x.uid, "升级后职位:", f"{x.job}:", x.grade,
"薪资:", x.get_salary(), f"({x.get_salary() - salary_org})")
if sum == 0:
print("查无此人")
def main():
staff_lis = []
iterator = enter(staff_lis)
while True:
command = int(input("1.录入;2.查询;3.升级;4.降级;5.退出:"))
if command == 1:
next(iterator)
elif command == 2:
query(staff_lis)
elif command == 3:
up(staff_lis)
elif command == 4:
down(staff_lis)
elif command == 5:
break
if __name__ == '__main__':
main()
|
|