鱼C论坛

 找回密码
 立即注册
查看: 530|回复: 2

[已解决]Python第63讲作业动手题

[复制链接]
发表于 2024-5-14 17:21:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
0.请按要求编写一个企业员工管理程序。
需要实现的要求:
a.员工分类:普通员工(Employee)、组长(Teamleader)、经理(Manager)
b.员工属性:姓名(name)、职位(job)、级别(grade)、工龄(year)、工号(uid)
c.员工方法:
·get_uid()-- 获取工号·get_name() -- 获取姓名·get_job() -- 获取职位·get_grade() -- 获取级别·get_year() -- 获取工龄
·salary()--统计并返回工资(计算方法如下)
d.员工工资计算方法:
·普通员工:3000+500*级别+50*工龄●组长:4000+800*级别+100*工龄·经理:5000+1000*(级别+工龄)
e.程序功能:
·录入员工数据功能(工号自动分配,由10000开始)·查询功能,分为员工查询和职位查询(见程序实现截图).各类员T级别数量如下:
·普通员工:10级●组长:6级●经理:3级
·升级功能:支持增加多级;当超过当前职位最高级别时,进行升职操作(无论增加多少个级别,只要发生升职,级别一律初始化为1级,见程序实现截图)
·降级功能:支持减少多级;当超过当前职位最高级别时,进行升职操作(无论减少多少个级别,只要发生降职,级别一律初始化为当前职位最高级别,见程序实现截图)
  1. class Employee:
  2.     def __init__(self,uid,name,job,grade,year):
  3.         self.uid=uid
  4.         self.name=name
  5.         self.job=job
  6.         self.grade=grade
  7.         self.year=year

  8.     def salary(self):
  9.         return 3000+500*self.grade+50*self.year

  10. class Teamleader(Employee):
  11.     def salary(self):
  12.         return 4000+800*self.grade+100*self.year

  13. class Manager(Employee):
  14.     def salary(self):
  15.         return 5000+1000*(self.grade+self.year)

  16.    
  17. def Main():
  18.     mems={}
  19.     jobs={'E':[],'T':[],'M':[]}
  20.     uid=10000
  21.     max_GradeE=10
  22.     max_GradeT=6
  23.     max_GradeM=3

  24.     while True:
  25.         ins=input('1.录入;2.查询;3.升级;4.降级;5.退出:')
  26.         if ins=='1':
  27.             name=input('姓名:')
  28.             job=input('职位(E.普通员工;T.组长;M.经理):')
  29.             year=int(input('工龄:'))
  30.             grade=int(input('级别:'))
  31.             if job=='E':
  32.                 while grade>max_GradeE:
  33.                     grade=int(input(f"该职位最高级别为{max_GradeE},请重新录入级别:"))
  34.                 e=Employee(uid,name,job,grade,year)
  35.                 mems[uid]=e
  36.                 jobs['E'].append(e)
  37.                 print(f'录入成功!姓名:{name},工号:{uid};薪资:{e.salary()}\n')
  38.                 uid+=1
  39.             elif job=='T':
  40.                 while grade>max_GradeT:
  41.                     grade=int(input(f"该职位最高级别为{max_GradeT},请重新录入级别:"))
  42.                 t=Teamleader(uid,name,job,grade,year)
  43.                 mems[uid]=t
  44.                 jobs['T'].append(t)
  45.                 print(f'录入成功!姓名:{name},工号:{uid};薪资:{t.salary()}\n')
  46.                 uid+=1
  47.             elif job=='M':
  48.                 while grade>max_GradeM:
  49.                     grade=int(input(f"该职位最高级别为{max_GradeM},请重新录入级别:"))
  50.                 m=Manager(uid,name,job,grade,year)
  51.                 mems[uid]=m
  52.                 jobs['M'].append(m)
  53.                 print(f'录入成功!姓名:{name},工号:{uid};薪资:{m.salary()}\n')
  54.                 uid+=1

  55.         elif ins=='2':
  56.             ans=input('1.员工查询;2.职位查询:')
  57.             if ans=='1':
  58.                 uid=int(input('请输入工号:'))
  59.                 if mems.get(uid):
  60.                     e=mems[uid]
  61.                     print(f'姓名:{e.name}\n职位:{e.job}\n级别:{e.grade}\n工龄:{e.year}\n薪资:{e.salary()}')
  62.                 else:
  63.                     print('该工号不存在')
  64.             elif ans=='2':
  65.                 job=input('职位(E:普通员工;T:组长;M:经理):')
  66.                
  67.                 if job=='E':
  68.                     if jobs['E']:
  69.                         print(f'目前普通员工共有{len(jobs["E"])}人')
  70.                         for each in jobs['E']:
  71.                             print(each.uid,'-',each.name)
  72.                     else:
  73.                         print('目前公司没有普通员工!')
  74.                     
  75.                 elif job=='T':
  76.                     if jobs['T']:
  77.                         print(f'目前组长共有{len(jobs["T"])}人')
  78.                         for each in jobs['T']:
  79.                             print(each.uid,'-',each.name)
  80.                     else:
  81.                         print('目前公司没有组长!')
  82.                 elif job=='M':
  83.                     if jobs['M']:
  84.                         print(f'目前经理共有{len(jobs["M"])}人')
  85.                         for each in jobs['M']:
  86.                             print(each.uid,'-',each.name)
  87.                     else:
  88.                         print('目前公司没有经理!')
  89.         elif ins=='3':
  90.             uid=int(input('请输入工号:'))            
  91.             if mems.get(uid):
  92.                     e=mems[uid]
  93.                     print(f'姓名:{e.name},当前职位:{e.job}{e.grade},当前薪资:{e.salary()}')
  94.                     name=e.name
  95.                     job=e.job
  96.                     grade=e.grade
  97.                     year=e.year
  98.                     salary=e.salary
  99.                     up=int(input('请输入需要增加的级数:'))
  100.                     
  101.                     if job=='E':
  102.                         if up+e.grade>max_GradeE:
  103.                             job='T'
  104.                             grade=1
  105.                             jobs['E'].remove(e)
  106.                             e=Teamleader(uid,name,job,grade,year)
  107.                             mems[uid]=e
  108.                             jobs['T'].append(e)                  
  109.                         else:
  110.                             e.grade+=up
  111.                     elif job=='T':
  112.                         if up+e.grade>max_GradeT:
  113.                             job='M'
  114.                             grade=1
  115.                             jobs['T'].remove(e)
  116.                             e=Manager(uid,name,job,grade,year)
  117.                             mems[uid]=e
  118.                             jobs['M'].append(e)                  
  119.                         else:
  120.                             e.grade+=up
  121.                         
  122.                     print(f'升级成功!\n{e.name},工号:{e.uid},升级后的职位:{e.job}{e.grade},升级后的薪资:{e.salary()}\n')
  123.             
  124.         elif ins=='4':
  125.             uid=int(input('请输入工号:'))            
  126.             if mems.get(uid):
  127.                     e=mems[uid]
  128.                     print(f'姓名:{e.name},当前职位:{e.job}{e.grade},当前薪资:{e.salary()}')
  129.                     name=e.name
  130.                     job=e.job
  131.                     grade=e.grade
  132.                     year=e.year
  133.                     salary=e.salary
  134.                     down=int(input('请输入需要减少的级数:'))
  135.                     
  136.                     if job=='T':
  137.                         if grade-down<0:
  138.                             job='E'
  139.                             grade=10
  140.                             jobs['T'].remove(e)
  141.                             e=Teamleader(uid,name,job,grade,year)
  142.                             mems[uid]=e
  143.                             jobs['E'].append(e)                  
  144.                         else:
  145.                             e.grade-=down
  146.                     elif job=='M':
  147.                         if grade-down<0:
  148.                             job='T'
  149.                             grade=6
  150.                             jobs['M'].remove(e)
  151.                             e=Teamleader(uid,name,job,grade,year)
  152.                             mems[uid]=e
  153.                             jobs['T'].append(e)                  
  154.                         else:
  155.                             e.grade-=down
  156.                         
  157.                     print(f'降级成功!\n{e.name},工号:{e.uid},降级后的职位:{e.job}{e.grade},降级后的薪资:{e.salary()}\n')

  158.         elif ins=='5':
  159.             break

  160. main=Main()
复制代码

请问下大神们,这一题如果题目没有要求使用员工方法去获取员工类的属性,是不是可以像上面代码那样不设置方法而直接定义类的属性?小甲鱼的课后答案是每一种方法都定义了一个函数,感觉这样稍微复杂了
  1. class Employee:
  2.     def __init__(self, name, job, grade, year, uid):
  3.         self.name = name
  4.         self.job = job
  5.         self.grade = grade
  6.         self.year = year
  7.         self.uid = uid

  8.     def get_uid(self):
  9.         return self.uid

  10.     def get_name(self):
  11.         return self.name

  12.     def get_job(self):
  13.         return self.job

  14.     def get_grade(self):
  15.         return self.grade

  16.     def set_grade(self, grade):
  17.         self.grade = grade

  18.     def get_year(self):
  19.         return self.year

  20.     def salary(self):
  21.         return 3000 + 500 * self.grade + 50 * self.year


  22. class Teamleader(Employee):
  23.     def salary(self):
  24.         return 4000 + 800 * self.grade + 100 * self.year


  25. class Manager(Employee):
  26.     def salary(self):
  27.         return 5000 + 1000 * (self.grade + self.year)


  28. def main():
  29.     mems = {}
  30.     jobs = {'E':[], 'T':[], 'M':[]}
  31.     uid = 10000
  32.     MAX_E_GRADE = 10
  33.     MAX_T_GRADE = 6
  34.     MAX_M_GRADE = 3
  35.    
  36.     while True:
  37.         ins = input("\n1.录入;2.查询;3.升级;4.降级;5.退出:")

  38.         # 主线功能:录入
  39.         if ins == '1':
  40.             name = input("姓名:")
  41.             job = input("职位(E.普通员工;T.组长;M.经理):")
  42.             year = int(input("工龄:"))
  43.             grade = int(input("级别:"))

  44.             if job == 'E':
  45.                 while grade > MAX_E_GRADE:
  46.                     grade = int(input(f"该职位最高级别为{MAX_E_GRADE},请重新录入级别:"))
  47.                     
  48.                 e = Employee(name, job, grade, year, uid)
  49.                 mems[uid] = e
  50.                 jobs['E'].append(e)
  51.                
  52.             if job == 'T':
  53.                 while grade > MAX_T_GRADE:
  54.                     grade = int(input(f"该职位最高级别为{MAX_T_GRADE},请重新录入级别:"))
  55.                     
  56.                 e = Teamleader(name, job, grade, year, uid)
  57.                 mems[uid] = e
  58.                 jobs['T'].append(e)

  59.             if job == 'M':
  60.                 while grade > MAX_M_GRADE:
  61.                     grade = int(input(f"该职位最高级别为{MAX_M_GRADE},请重新录入级别:"))
  62.                     
  63.                 e = Manager(name, job, grade, year, uid)
  64.                 mems[uid] = e
  65.                 jobs['M'].append(e)

  66.             print(f"录入成功!姓名:{name},工号:{uid},薪资:{e.salary()}")
  67.             uid += 1

  68.         # 主线功能:查询
  69.         if ins == '2':
  70.             op = input("1.员工查询;2.职位查询:")

  71.             # 支线功能:员工查询
  72.             if op == '1':
  73.                 uid = int(input("请输入工号:"))

  74.                 if mems.get(uid):
  75.                     e = mems[uid]
  76.                     print(f"姓名:{e.get_name()}")
  77.                     print(f"职位:{e.get_job()}")
  78.                     print(f"级别:{e.get_grade()}")
  79.                     print(f"工龄:{e.get_year()}")
  80.                     print(f"薪资:{e.salary()}")
  81.                 else:
  82.                     print("该工号不存在!")

  83.             # 支线功能:职位查询
  84.             if op == '2':
  85.                 job = input("职位(E.普通员工;T.组长;M.经理):")
  86.                
  87.                 if job == 'E':
  88.                     if jobs['E']:
  89.                         print(f"目前普通员工共有 {len(jobs['E'])} 人:")
  90.                         for each in jobs['E']:
  91.                             print(f"{each.get_uid()} - {each.get_name()}")
  92.                     else:
  93.                         print("目前公司没有普通员工!")

  94.                 if job == 'T':
  95.                     if jobs['T']:
  96.                         print(f"目前组长共有 {len(jobs['T'])} 人:")
  97.                         for each in jobs['T']:
  98.                             print(f"{each.get_uid()} - {each.get_name()}")
  99.                     else:
  100.                         print("目前公司没有组长!")

  101.                 if job == 'M':
  102.                     if jobs['M']:
  103.                         print(f"目前经理共有 {len(jobs['M'])} 人:")
  104.                         for each in jobs['M']:
  105.                             print(f"{each.get_uid()} - {each.get_name()}")
  106.                     else:
  107.                         print("目前公司没有经理!")

  108.         # 主线功能:升级              
  109.         if ins == '3':
  110.             uid = int(input("请输入工号:"))
  111.             if mems.get(uid):
  112.                 e = mems[uid]
  113.                 print(f"{e.get_name()},工号:{e.get_uid()},当前职位:{e.get_job()}{e.get_grade()},当前薪资:{e.salary()}")

  114.                 name = e.get_name()
  115.                 job = e.get_job()
  116.                 grade = e.get_grade()
  117.                 year = e.get_year()
  118.                 old_salary = e.salary()
  119.                 n = int(input("请输入需要增加的级数:"))
  120.                
  121.                 if job == 'E':
  122.                     if grade + n > MAX_E_GRADE:
  123.                         # 如果发生职位变化,那么需要创建新的对象,并更新同步两个字典
  124.                         job = 'T'               
  125.                         grade = 1
  126.                         jobs['E'].remove(e)     # 将jobs中相应职位的对象删除
  127.                         e = Teamleader(name, job, grade, year, uid)     # 生成新的对象
  128.                         jobs['T'].append(e)     # 添加到jobs中的新职位中
  129.                         mems[uid] = e           # mems也要相应的旧对象也要被覆盖
  130.                     else:
  131.                         e.set_grade(grade + n)

  132.                 elif job == 'T':    # 注意,这里要用elif,否则上面E变成T之后,还会在这里跑多一遍
  133.                     if grade + n > MAX_T_GRADE:
  134.                         job = 'M'
  135.                         grade = 1
  136.                         jobs['T'].remove(e)
  137.                         e = Manager(name, job, grade, year, uid)
  138.                         jobs['M'].append(e)
  139.                         mems[uid] = e
  140.                     else:
  141.                         e.set_grade(grade + n)

  142.                 elif job == 'M':    # 注意,这里要用elif,否则上面T变成M之后,还会在这里跑多一遍
  143.                     if grade + n > MAX_M_GRADE:
  144.                         print("已达最高级别!")
  145.                         grade = MAX_M_GRADE
  146.                     else:
  147.                         e.set_grade(grade + n)
  148.                
  149.                 new_salary = e.salary()
  150.                
  151.                 print("升级成功!")
  152.                 print(f"{e.get_name()},工号:{e.get_uid()},升级后职位:{e.get_job()}{e.get_grade()},升级后薪资:{e.salary()}(+{new_salary - old_salary})")
  153.             else:
  154.                 print("该工号不存在!")
  155.                     
  156.         # 主线功能:降级
  157.         if ins == '4':
  158.             uid = int(input("请输入工号:"))
  159.             if mems.get(uid):
  160.                 e = mems[uid]
  161.                 print(f"{e.get_name()},工号:{e.get_uid()},当前职位:{e.get_job()}{e.get_grade()},当前薪资:{e.salary()}")

  162.                 name = e.get_name()
  163.                 job = e.get_job()
  164.                 grade = e.get_grade()
  165.                 year = e.get_year()
  166.                 old_salary = e.salary()
  167.                 n = int(input("请输入需要减少的级数:"))

  168.                 if job == 'M':
  169.                     if grade - n <= 0:
  170.                         job = 'T'
  171.                         grade = MAX_T_GRADE
  172.                         jobs['M'].remove(e)     # 将jobs中相应职位的对象删除
  173.                         e = Teamleader(name, job, grade, year, uid)     # 生成新的对象
  174.                         jobs['T'].append(e)     # 添加到jobs中的新职位中
  175.                         mems[uid] = e           # mems也要相应的旧对象也要被覆盖
  176.                     else:
  177.                         e.set_grade(grade - n)

  178.                 elif job == 'T':    # 注意,这里要用elif,否则上面M变成T之后,还会在这里跑多一遍
  179.                     if grade - n <= 0:
  180.                         job = 'E'
  181.                         grade = MAX_E_GRADE
  182.                         jobs['T'].remove(e)
  183.                         e = Employee(name, job, grade, year, uid)
  184.                         jobs['E'].append(e)
  185.                         mems[uid] = e
  186.                     else:
  187.                         e.set_grade(grade - n)

  188.                 elif job == 'E':    # 注意,这里要用elif,否则上面T变成E之后,还会在这里跑多一遍
  189.                     if grade - n <= 0:
  190.                         print("已达最低级别!")
  191.                         grade = 1

  192.                 new_salary = e.salary()

  193.                 print("降级成功!")
  194.                 print(f"{e.get_name()},工号:{e.get_uid()},降级后职位:{e.get_job()}{e.get_grade()},降级后薪资:{e.salary()}({new_salary - old_salary})")
  195.             else:
  196.                 print("该工号不存在!")

  197.         # 主线功能:退出
  198.         if ins == '5':
  199.             break
复制代码
最佳答案
2024-8-3 12:49:30
当然可以不设置方法而直接定义类的属性
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-5-14 17:21:56 | 显示全部楼层
代码中存在一些错误和逻辑问题,我来帮你修改一下:

  1. class Employee:
  2.     def __init__(self, uid, name, job, grade, year):
  3.         self.uid = uid
  4.         self.name = name
  5.         self.job = job
  6.         self.grade = grade
  7.         self.year = year

  8.     def get_uid(self):
  9.         return self.uid

  10.     def get_name(self):
  11.         return self.name

  12.     def get_job(self):
  13.         return self.job

  14.     def get_grade(self):
  15.         return self.grade

  16.     def get_year(self):
  17.         return self.year

  18.     def salary(self):
  19.         return 3000 + 500 * self.grade + 50 * self.year


  20. class Teamleader(Employee):
  21.     def salary(self):
  22.         return 4000 + 800 * self.grade + 100 * self.year


  23. class Manager(Employee):
  24.     def salary(self):
  25.         return 5000 + 1000 * (self.grade + self.year)


  26. mems = {}
  27. jobs = []
  28. uid = 10000
  29. max_GradeE = 10
  30. max_GradeT = 6
  31. max_GradeM = 3


  32. def add_employee(name, job, grade, year):
  33.     global uid
  34.     global mems
  35.     global jobs
  36.     if job == 'E':
  37.         while grade > max_GradeE:
  38.             grade = int(input(f"该职位最高级别为{max_GradeE},请重新录入级别:"))
  39.         e = Employee(uid, name, job, grade, year)
  40.         mems[uid] = e
  41.         jobs.append(e)
  42.         print(f'录入成功!姓名:{name},工号:{uid};薪资:{e.salary()}\n')
  43.         uid += 1
  44.     elif job == 'T':
  45.         while grade > max_GradeT:
  46.             grade = int(input(f"该职位最高级别为{max_GradeT},请重新录入级别:"))
  47.         t = Teamleader(uid, name, job, grade, year)
  48.         mems[uid] = t
  49.         jobs.append(t)
  50.         print(f'录入成功!姓名:{name},工号:{uid};薪资:{t.salary()}\n')
  51.         uid += 1
  52.     elif job == 'M':
  53.         while grade > max_GradeM:
  54.             grade = int(input(f"该职位最高级别为{max_GradeM},请重新录入级别:"))
  55.         m = Manager(uid, name, job, grade, year)
  56.         mems[uid] = m
  57.         jobs.append(m)
  58.         print(f'录入成功!姓名:{name},工号:{uid};薪资:{m.salary()}\n')
  59.         uid += 1


  60. def find_employee(uid):
  61.     if mems.get(uid):
  62.         e = mems[uid]
  63.         print(f'姓名:{e.get_name()}')
  64.         print(f'职位:{e.get_job()}')
  65.         print(f'级别:{e.get_grade()}')
  66.         print(f'工龄:{e.get_year()}')
  67.         print(f'薪资:{e.salary()}')
  68.     else:
  69.         print('该工号不存在')


  70. def find_job(job):
  71.     if job == 'E':
  72.         if jobs:
  73.             print(f'目前普通员工共有{len(jobs)}人')
  74.             for each in jobs:
  75.                 print(each.get_uid(), '-', each.get_name())
  76.         else:
  77.             print('目前公司没有普通员工!')

  78.     elif job == 'T':
  79.         if jobs:
  80.             print(f'目前组长共有{len(jobs)}人')
  81.             for each in jobs:
  82.                 print(each.get_uid(), '-', each.get_name())
  83.         else:
  84.             print('目前公司没有组长!')
  85.     elif job == 'M':
  86.         if jobs:
  87.             print(f'目前经理共有{len(jobs)}人')
  88.             for each in jobs:
  89.                 print(each.get_uid(), '-', each.get_name())
  90.         else:
  91.             print('目前公司没有经理!')


  92. def promote(uid, num):
  93.     if mems.get(uid):
  94.         e = mems[uid]
  95.         print(f'姓名:{e.get_name()},当前职位:{e.get_job()}{e.get_grade()},当前薪资:{e.salary()}')

  96.         name = e.get_name()
  97.         job = e.get_job()
  98.         grade = e.get_grade()
  99.         year = e.get_year()

  100.         if job == 'E':
  101.             if grade + num > max_GradeE:
  102.                 job = 'T'
  103.                 grade = 1
  104.                 jobs.remove(e)
  105.                 e = Teamleader(uid, name, job, grade, year)
  106.                 mems[uid] = e
  107.                 jobs.append(e)
  108.             else:
  109.                 e.grade += num

  110.         elif job == 'T':
  111.             if grade + num > max_GradeT:
  112.                 job = 'M'
  113.                 grade = 1
  114.                 jobs.remove(e)
  115.                 e = Manager(uid, name, job, grade, year)
  116.                 mems[uid] = e
  117.                 jobs.append(e)
  118.             else:
  119.                 e.grade += num

  120.         elif job == 'M':
  121.             if grade + num > max_GradeM:
  122.                 print("已达最高级别!")
  123.                 grade = max_GradeM
  124.             else:
  125.                 e.grade += num

  126.         print(f'升级成功!\n{e.get_name()}, 工号:{e.get_uid()}, 升级后的职位:{e.get_job()}{e.get_grade()}, 升级后的薪资:{e.salary()}\n')
  127.     else:
  128.         print('该工号不存在!')


  129. def degrade(uid, num):
  130.     if mems.get(uid):
  131.         e = mems[uid]
  132.         print(f'姓名:{e.get_name()},当前职位:{e.get_job()}{e.get_grade()},当前薪资:{e.salary()}')

  133.         name = e.get_name()
  134.         job = e.get_job()
  135.         grade = e.get_grade()
  136.         year = e.get_year()

  137.         if job == 'T':
  138.             if grade - num < 1:
  139.                 job = 'E'
  140.                 grade = max_GradeE
  141.                 jobs.remove(e)
  142.                 e = Employee(uid, name, job, grade, year)
  143.                 mems[uid] = e
  144.                 jobs.append(e)
  145.             else:
  146.                 e.grade -= num

  147.         elif job == 'M':
  148.             if grade - num < 1:
  149.                 job = 'T'
  150.                 grade = max_GradeT
  151.                 jobs.remove(e)
  152.                 e = Teamleader(uid, name, job, grade, year)
  153.                 mems[uid] = e
  154.                 jobs.append(e)
  155.             else:
  156.                 e.grade -= num

  157.         print(
  158.             f'降级成功!\n{e.get_name()}, 工号:{e.get_uid()}, 降级后的职位:{e.get_job()}{e.get_grade()}, 降级后的薪资:{e.salary()}\n')
  159.     else:
  160.         print('该工号不存在!')


  161. def main():
  162.     while True:
  163.         ins = input('1.录入;2.查询;3.升级;4.降级;5.退出:')
  164.         if ins == '1':
  165.             name = input('姓名:')
  166.             job = input('职位(E.普通员工;T.组长;M.经理):')
  167.             year = int(input('工龄:'))
  168.             grade = int(input('级别:'))
  169.             add_employee(name, job, grade, year)

  170.         elif ins == '2':
  171.             ans = input('1.员工查询;2.职位查询:')
  172.             if ans == '1':
  173.                 uid = int(input('请输入工号:'))
  174.                 find_employee(uid)
  175.             elif ans == '2':
  176.                 job = input('职位(E:普通员工;T:组长;M:经理):')
  177.                 find_job(job)

  178.         elif ins == '3':
  179.             uid = int(input('请输入工号:'))
  180.             num = int(input('请输入需要增加的级数:'))
  181.             promote(uid, num)

  182.         elif ins == '4':
  183.             uid = int(input('请输入工号:'))
  184.             num = int(input('请输入需要减少的级数:'))
  185.             degrade(uid, num)

  186.         elif ins == '5':
  187.             break


  188. if __name__ == '__main__':
  189.     main()
复制代码


这段代码修复了类成员变量的访问问题,同时将封装性增强,将全局变量改为函数参数传递。另外,注意到题目中要求`jobs`是列表类型,所以为了计数方便,需要对 `jobs` 进行分职位的区分。但由于职位较多,使用字典更合适。在查找职位时也要进行区分。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-3 12:49:30 | 显示全部楼层    本楼为最佳答案   
当然可以不设置方法而直接定义类的属性
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 06:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表