本主题需向作者支付 10 鱼币 才能浏览 购买主题
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:
第 1 题的答案是:
第 2 题的答案是:
第 3 题的答案是:
第 4 题的答案是:
第 5 题的答案是:
-------- 动动手 --------
请将第 0 题的代码写在下方:
请回复您的答案^_^
-
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:子类可以通过重写达到类的方法的多态
第 1 题的答案是:可以根据不同情况执行不同的操作
第 2 题的答案是:可以
第 3 题的答案是:不知道
第 4 题的答案是:降低了耦合
第 5 题的答案是:不属于
-------- 动动手 --------
请将第 0 题的代码写在下方:
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:
不知道
第 1 题的答案是:
不同类对同一个方法的表达不同
第 2 题的答案是:
可以
第 3 题的答案是:
不知道
第 4 题的答案是:
降低了耦合
第 5 题的答案是:
属于
-------- 动动手 --------
请将第 0 题的代码写在下方:
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:
第 1 题的答案是:
第 2 题的答案是:
第 3 题的答案是:
第 4 题的答案是:
第 5 题的答案是:
-------- 动动手 --------
请将第 0 题的代码写在下方:
class Workers:
def __init__(self,uid,name,job,grade,year,salary):
self.uid = uid
self.name = name
self.job = job
self.grade = grade
self.year = year
self.salary = salary
class Checkin:
def is_exist(self):
uid = int(input('请输入工号:'))
if self.employees.get(uid):
return uid
else:
print('该工号不存在')
class Progress(Checkin):
def __init__(self):
self.employees = {}
self.uid = 10000
def get_uid(self,uid):
if self.employees.get(uid):
return uid
def get_name(self,uid):
name = self.employees.name
return name
def get_job(self,uid):
job = self.employees.job
return job
def get_grade(self,uid):
grade = self.employees.grade
return grade
def get_year(self,uid):
year = self.employees.year
return year
def get_salary(self,job,grade,year):
if job == 'E':
self.salary = 3000 + 500*grade + 50*year
if job == 'T':
self.salary = 4000 + 800*grade + 100*year
if job == 'M':
self.salary = 5000 + 1000*(grade+year)
return self.salary
def SalaryMixin(self,uid):
if self.employees.job == 'E':
self.salary = 3000 + 500*self.employees.grade + 50*self.employees.year
if self.employees.job == 'T':
self.salary = 4000 + 800*self.employees.grade + 50*self.employees.year
if self.employees.job == 'M':
self.salary = 5000 + 1000*(self.employees.grade+self.employees.year)
return self.salary
def enter(self):
name = input('姓名:')
job = input('职位(E.普通员工;T.组长;M.经理):')
while job not in ('E','T','M'):
job = input('输入错误请重新输入:/n (E.普通员工;T.组长;M.经理):')
year = int(input('工龄:'))
grade = int(input('级别:'))
if job == 'E':
while grade <= 0 or grade > 10:
grade = int(input('该职位最高级别为10,请重新录入级别:'))
if job == 'T':
while grade <=0 or grade > 6:
grade = int(input('该职位最高级别为6,请重新录入级别:'))
if job == 'M':
while grade <=0 or grade > 3:
grade = int(input('该职位最高级别为3,请重新录入级别:'))
salary = self.get_salary(job,grade,year)
worker = Workers(self.uid,name,job,grade,year,salary)
self.employees = worker
print(f'录入成功!姓名:{name},工号:{self.uid},薪资:{salary}')
self.uid += 1
def check(self):
c = input('1.员工查询;2.职位查询:')
if c == '1':
uid = self.is_exist()
if uid:
print(f'姓名:{self.employees.name}')
print(f'职位:{self.employees.job}')
print(f'级别:{self.employees.grade}')
print(f'工龄:{self.employees.year}')
print(f'薪资:{self.employees.salary}')
if c == '2':
job = input('职位(E.普通员工;T.组长;M.经理):')
m_ = []
d_ = {'E':'普通员工','T':'组长','M':'经理'}
for i in self.employees.keys():
if self.employees.job == job:
m_.append(i)
if len(m_) != 0:
print(f'目前{d_}共有{len(m_)}人:')
for m in m_:
print(f'{m} - {self.employees.name}')
else:
print(f'目前公司没有{d_}')
def up(self):
uid = self.is_exist()
if uid:
print(f'{self.employees.name},工号:{uid},当前职位:{self.employees.job}{self.employees.grade},当前薪资:{self.employees.salary}')
add = int(input('请输入需要增加的级数:'))
if self.get_job(uid) == 'E':
if self.get_grade(uid)+add > 10:
self.employees.job = 'T'
self.employees.grade = 1
else:
self.employees.grade = self.get_grade(uid)+add
elif self.get_job(uid) == 'T':
if self.get_grade(uid)+add > 6:
self.employees.job = 'M'
self.employees.grade = 1
else:
self.employees.grade = self.get_grade(uid)+add
elif self.get_job(uid) == 'M':
if self.get_grade(uid)+add > 3:
print('超出最大职级')
return
else:
self.employees.grade = self.get_grade(uid)+add
print('升级成功')
print(f'{self.get_name(uid)},工号:{uid},升级后职位:{self.get_job(uid)}{self.get_grade(uid)},升级后薪资:{self.SalaryMixin(uid)}(+{self.SalaryMixin(uid)-self.employees.salary})')
self.employees.salary = self.SalaryMixin(uid)
def down(self):
uid = self.is_exist()
if uid:
print(f'{self.employees.name},工号:{uid},当前职位:{self.employees.job}{self.employees.grade},当前薪资:{self.employees.salary}')
sub = int(input('请输入需要减少的级数:'))
if self.get_job(uid) == 'M':
if self.get_grade(uid)-sub <= 0:
self.employees.job = 'T'
self.employees.grade = 6
else:
self.employees.grade = self.get_grade(uid)-sub
elif self.get_job(uid) == 'T':
if self.get_grade(uid)-sub <= 0:
self.employees.job = 'E'
self.employees.grade = 10
else:
self.employees.grade = self.get_grade(uid)-sub
elif self.get_job(uid) == 'E':
if self.get_grade(uid)-sub <= 0:
print('超出最小职级')
return
else:
self.employees.grade = self.get_grade(uid)-sub
print('降级成功')
print(f'{self.get_name(uid)},工号:{uid},降级后职位:{self.get_job(uid)}{self.get_grade(uid)},升级后薪资:{self.SalaryMixin(uid)}(-{self.employees.salary-self.SalaryMixin(uid)})')
self.employees.salary = self.SalaryMixin(uid)
def main():
p = Progress()
e = 0
while e != '5':
e = input('1.录入;2.查询;3.升级;4.降级;5.退出:')
if e == '1':
p.enter()
if e == '2':
p.check()
if e == '3':
p.up()
if e == '4':
p.down()
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:
第 1 题的答案是:
第 2 题的答案是:
第 3 题的答案是:
第 4 题的答案是:
第 5 题的答案是:
-------- 动动手 --------
请将第 0 题的代码写在下方:
0、
同一运算符、函数、对象,在不同场景中实现的不同功能
1、
2、
可以的
3、
如果它走起路来像鸭子,叫起来也像鸭子,那么它就可以被当做鸭子
4、
低耦合
5、
是的
动动手:
0、
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:
第 1 题的答案是:
第 2 题的答案是:
第 3 题的答案是:
第 4 题的答案是:
第 5 题的答案是:
-------- 动动手 --------
请将第 0 题的代码写在下方:
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:
通过类继承,重写方法
第 1 题的答案是:
第 2 题的答案是:
是的
第 3 题的答案是:
当我们看见一只鸟,走起路来像鸭子,游起泳来像鸭子,叫起来也像鸭子,那么这只鸟就可以把它成为鸭子
第 4 题的答案是:
增强内聚
第 5 题的答案是:
不是
-------- 动动手 --------
class Employee:
job = 'E'
maxgrade = 10
prejob = -1
nextjob = 'T'
jobname = '普通员工'
def __init__(self,uid,name,year,grade):
self.uid = uid
self.name = name
self.year = year
self.grade = grade
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 salary(self):
return 3000 + 500*self.grade + 50*self.year
class Teamleader(Employee):
job = 'T'
maxgrade = 6
prejob = 'E'
nextjob = 'M'
jobname = '组长'
def salary(self):
return 4000 + 800*self.grade + 100*self.year
class Manager(Employee):
job = 'M'
maxgrade = 3
prejob = 'T'
nextjob = -1
jobname = '组长'
def salary(self):
return 5000 + 1000*(self.grade + self.year)
class ManageSystem:
job_map = {'E':Employee,'T':Teamleader,'M':Manager}
def __init__(self):
self.employee = {}
self.uid = 10000
self.employee = Manager(10000,'小甲鱼',12,3)
self.employee = Teamleader(10001,'不二如是',10,6)
self.employee = Employee(10002,'小甲鱼',5,5)
def welcome(self):
ins = 0
while ins != '5':
ins = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
if ins == '1':
self.add_employee()
if ins == '2':
self.query_employee()
if ins == '3':
self.upgrade_employee()
if ins == '4':
self.downgrade_employee()
def add_employee(self):
name = input("姓名:")
job = input("职位(E.普通员工;T.组长;M.经理):")
year = int(input("工龄:"))
grade = int(input("级别:"))
while grade > self.job_map.get(job).maxgrade or grade < 1:
grade = int(input(f"该之外最高级别为{self.job_map.get(job).maxgrade},请重新录入级别:"))
classname = self.job_map.get(job)
employee = classname(self.uid,name,year,grade)
self.employee = employee
print(f"录入成功!姓名:{name},工号:{self.uid},薪资:{employee.salary()}")
self.uid += 1
def query_employee(self):
ins = input("1.员工查询;2.职位查询:")
if ins == '1':
uid = int(input("请输入工号:"))
if uid in self.employee:
print(f"姓名:{self.employee.get_name()}")
print(f"职位:{self.employee.get_job()}")
print(f"级别:{self.employee.get_grade()}")
print(f"工龄:{self.employee.get_year()}")
print(f"薪资:{self.employee.salary()}")
else:
print("该工号不存在")
elif ins == '2':
job = input("职位(E.普通员工;T.组长;M.经理):")
result = {key:value for key,value in self.employee.items() if value.get_job() == job}
num = len(result)
if num > 0:
print(f"目前{self.job_map.get(job).jobname}共有{num}人")
for key,value in result.items():
print(f"{key}-{value.get_name()}")
else:
print(f"目前公司没有{self.job_map.get(job).jobname}")
def upgrade_employee(self):
uid = int(input("请输入工号:"))
if uid in self.employee:
employee = self.employee
name = employee.get_name()
job = employee.get_job()+str(employee.get_grade())
old_salary= employee.salary()
print(f"{name},工号:{uid},当前职位:{job},当前薪资:{old_salary}")
up = int(input("请输入需要增加的级数:"))
suc = True
if employee.get_grade()+ up <= employee.maxgrade:
employee.grade = employee.get_grade()+ up
else:
if employee.nextjob == -1:
suc = False
else:
employee = self.job_map.get(employee.nextjob)(uid,employee.get_name(),employee.get_year(),1)
self.employee = employee
if suc:
print("升级成功")
print(f"{name},工号:{uid},当前职位:{employee.get_job()}{employee.get_grade()},当前薪资:{employee.salary()}(+{employee.salary()-old_salary})")
else:
print(f"{employee.jobname}无法再升级")
else:
print("该工号不存在")
def downgrade_employee(self):
uid = int(input("请输入工号:"))
if uid in self.employee:
employee = self.employee
name = employee.get_name()
job = employee.get_job()+str(employee.get_grade())
old_salary= employee.salary()
print(f"{name},工号:{uid},当前职位:{job},当前薪资:{old_salary}")
up = int(input("请输入需要减少的级数:"))
suc = True
if employee.get_grade()- up >0:
employee.grade = employee.get_grade()- up
else:
if employee.prejob == -1:
suc = False
else:
classname = self.job_map.get(employee.prejob)
employee = classname(uid,employee.get_name(),employee.get_year(),classname.maxgrade)
self.employee = employee
if suc:
print("降级成功")
print(f"{name},工号:{uid},当前职位:{employee.get_job()}{employee.get_grade()},当前薪资:{employee.salary()}({employee.salary()-old_salary})")
else:
print(f"{employee.jobname}无法再降级")
else:
print("该工号不存在")
def main():
m = ManageSystem()
m.welcome()
请将第 0 题的代码写在下方:
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:比如加号,比如len函数,比如类
第 1 题的答案是:可以统一处理一批对象,只要有相同的方法名字
第 2 题的答案是:可以
第 3 题的答案是:看起来像鸭子,叫起来像鸭子,尝起来像鸭子,此物就是鸭子
第 4 题的答案是:降低了耦合?
第 5 题的答案是:是吧,有重写
-------- 动动手 --------
请将第 0 题的代码写在下方:
class Employee:
def __init__(self, name, job, grade, year, uid):
self.name = name
self.job = job
self.grade = grade
self.year = year
self.uid = uid
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 salary(self):
return 3000 + 500 * self.grade + 50 * self.year
max_grade = 10
class Teamleader(Employee):
# 与父类构造相同,只重写工资和最高级别即可
def salary(self):
return 4000 + 800 * self.grade + 100 * self.year
max_grade = 6
class Manager(Employee):
def salary(self):
return 5000 + 1000 * (self.grade + self.year)
max_grade = 3
class ManageSystem:
def __init__(self):
self.employees = {} # {工号: Employee对象}
self.next_uid = 10000 # 下一张待发放的工号
job_map = {
'E': "普通员工",
'T': "组长",
'M': "经理"
}
class_map = {
'E': Employee,
'T': Teamleader,
'M': Manager,
}
def enter_system(self):
while True:
ins = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
if ins == '1':
self.add_employee()
elif ins == '2':
self.query_employee()
elif ins == '3':
self.upgrade_employee()
elif ins == '4':
self.downgrade_employee()
elif ins == '5':
break
else:
print("输入不合法,请重新输入")
def add_employee(self):
name = input("姓名:")
job = input("职位(E.普通员工,T.组长,M.经理):")
if job not in self.class_map:
print("职位输入有误!")
return
year = int(input("工龄:"))
grade = int(input("级别:"))
cls = self.class_map
while grade < 1 or grade > cls.max_grade:
grade = int(input(f"该职位最高级别为{cls.max_grade},请重新录入级别:"))
employee = cls(name, job, grade, year, self.next_uid)
self.employees = employee
print(f"录入成功!姓名:{name},工号:{self.next_uid},薪资:{employee.salary()}")
self.next_uid += 1
def query_employee(self):
ins = input("1.员工查询;2.职位查询:")
if ins == '1':
uid = int(input("请输入工号:"))
if uid in self.employees:
e = self.employees
print(e.get_name())
print(e.get_job())
print(e.get_grade())
print(e.get_year())
print(e.salary())
else:
print("该工号不存在!")
elif ins == '2':
job = input("职位(E.普通员工;T.组长;M.经理):")
if job not in self.job_map:
print("职位输入有误!")
return
matched = [(uid, emp) for uid, emp in self.employees.items()
if emp.get_job() == job]
if not matched:
print(f"目前公司没有{self.job_map}!")
else:
print(f"目前{self.job_map}共有{len(matched)}人")
for uid, emp in matched:
print(f"{uid} - {emp.get_name()}")
def upgrade_employee(self):
uid = int(input("请输入工号:"))
if uid not in self.employees:
print("该工号不存在!")
return
e = self.employees
old_salary = e.salary()
print(f"{e.get_name()},工号:{uid},当前职位:{e.get_job()}{e.get_grade()},当前薪资:{old_salary}")
up = int(input("请输入需要增加的级数:"))
new_grade = e.get_grade() + up
if new_grade <= e.max_grade:
e.grade = new_grade
else:
if e.get_job() == 'M':
print("经理无法再升职!")
return
elif e.get_job() == 'T':
self.employees = Manager(e.get_name(), 'M', 1, e.get_year(), uid)
elif e.get_job() == 'E':
self.employees = Teamleader(e.get_name(), 'T', 1, e.get_year(), uid)
e = self.employees# 升职换类后重新取对象
new_salary = e.salary()
print("升级成功!")
print(f"{e.get_name()},工号:{uid},升级后职位:{e.get_job()}{e.get_grade()},升级后薪资:{new_salary}(+{new_salary - old_salary})")
def downgrade_employee(self):
uid = int(input("请输入工号:"))
if uid not in self.employees:
print("该工号不存在!")
return
e = self.employees
old_salary = e.salary()
print(f"{e.get_name()},工号:{uid},当前职位:{e.get_job()}{e.get_grade()},当前薪资:{old_salary}")
down = int(input("请输入需要减少的级数:"))
new_grade = e.get_grade() - down
if new_grade >= 1:
e.grade = new_grade
else:
if e.get_job() == 'E':
print("普通员工无法再降职!")
return
elif e.get_job() == 'T':
self.employees = Employee(e.get_name(), 'E', Employee.max_grade, e.get_year(), uid)
elif e.get_job() == 'M':
self.employees = Teamleader(e.get_name(), 'T', Teamleader.max_grade, e.get_year(), uid)
e = self.employees# 降职换类后重新取对象
new_salary = e.salary()
delta = new_salary - old_salary# 自带正负号,避免写成 (-{负数}) 变成 --
print("降级成功!")
print(f"{e.get_name()},工号:{uid},降级后职位:{e.get_job()}{e.get_grade()},降级后薪资:{new_salary}({delta})")
def main():
manage = ManageSystem()
manage.enter_system()
main()
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:
第 1 题的答案是:
第 2 题的答案是:
第 3 题的答案是:
第 4 题的答案是:
第 5 题的答案是:
-------- 动动手 --------
请将第 0 题的代码写在下方:
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:
第 1 题的答案是:
第 2 题的答案是:
第 3 题的答案是:
第 4 题的答案是:
第 5 题的答案是:
-------- 动动手 --------
请将第 0 题的代码写在下方:
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:
第 1 题的答案是:
第 2 题的答案是:
第 3 题的答案是:
第 4 题的答案是:
第 5 题的答案是:
-------- 动动手 --------
请将第 0 题的代码写在下方:
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:
通过继承父类
第 1 题的答案是:
它不需要知道属性内部,可以直接调用函数方法
第 2 题的答案是:
不能,它得是函数或操作符
第 3 题的答案是:
不知,那个英国诗人?
第 4 题的答案是:
增强了内聚
第 5 题的答案是:
不属于,因为它执行的都是和的功能
-------- 动动手 --------
请将第 0 题的代码写在下方:
class Employer:
def __init__(self, name, job, grade, year, uid):
self.name = name
self.job = job
self.grade = grade
self.year = year
self.uid = uid
def Salary():
return 3000 + 500 * self.garde + 50 * year
class Teamleader:
def __init__(self, name, job, grade, year, uid):
self.name = name
self.job = job
self.grade = grade
self.year = year
self.uid = uid
def Salary():
return 4000 + 800 * grade + 100 * year
class Manager:
def __init__(self, name, job, grade, year, uid):
self.name = name
self.job = job
self.grade = grade
self.year = year
self.uid = uid
def Salary():
return 5000 + 1000 * (garde + year)
class functino:
def __init__:
n = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
if n = 1, job = E:
name = input("姓名:")
job = input("职位(E.普通员工;T.组长;M.经理):")
year = input("工龄:")
grade = input("级别:")
print(f"录入成功!姓名:{name}, 工号:10000,薪资:{3000 + 500 * self.garde + 50 * year}")
if n = 1, job = T:
name = input("姓名:")
job = input("职位(E.普通员工;T.组长;M.经理):")
year input("工龄:")
garde = input("级别:")
print(f"录入成功!姓名:{name}, 工号:, 薪资:{4000 + 800 * grade + 100 * year}")
if n = 1, job = M:
name = input("姓名:")
job = input("职位(E.普通员工:T.组长;M.经理):")
year = input("工龄:")
grade = input("级别:")
print(f"录入成功!姓名:{name}, 工号:, 薪资:{5000 + 1000 * (garde + year)})
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:
python多态:鸭子类型,继承重写
第 1 题的答案是:
多态的真正优势是把变化的部分封装起来,让系统的其余部分保持稳定。
第 2 题的答案是:
不可以
第 3 题的答案是:
When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.
第 4 题的答案是:
降低了耦合度
第 5 题的答案是:
不属于
-------- 动动手 --------
请将第 0 题的代码写在下方:
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:
第 1 题的答案是:
第 2 题的答案是:
第 3 题的答案是:
第 4 题的答案是:
第 5 题的答案是:
-------- 动动手 --------
请将第 0 题的代码写在下方:
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:
第 1 题的答案是:
第 2 题的答案是:
第 3 题的答案是:
第 4 题的答案是:
第 5 题的答案是:
-------- 动动手 --------
请将第 0 题的代码写在下方:
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:
第 1 题的答案是:
第 2 题的答案是:
第 3 题的答案是:
第 4 题的答案是:
第 5 题的答案是:
-------- 动动手 --------
请将第 0 题的代码写在下方:
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:
第 1 题的答案是:
第 2 题的答案是:
第 3 题的答案是:
第 4 题的答案是:
第 5 题的答案是:
-------- 动动手 --------
请将第 0 题的代码写在下方: