鱼C论坛

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

[已解决]python63讲课后求助 类和对象

[复制链接]
发表于 2023-4-18 15:23:11 | 显示全部楼层 |阅读模式

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

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

x
  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
复制代码



主要是不明白,这两句代码在做什么,是在实现随机生成员工代码吗,可以解释一下吗
  1. mems[uid] = e
  2. jobs['T'].append(e)
复制代码



最佳答案
2023-4-18 15:25:32
这两句代码的目的不是随机生成员工代码,而是将创建的员工对象存储到字典和列表中。这样可以方便地对员工进行查找和管理。

  • mems[uid] = e:这句代码将员工对象e存储到mems字典中,以uid作为键。mems是一个字典,用于存储所有员工对象,可以方便地通过工号(uid)查找员工。每个员工的uid是唯一的,因此可以确保字典中不会出现重复的键。
  • jobs['T'].append(e):这句代码将员工对象e追加到jobs字典中以'T'为键的列表中。jobs字典中的每个键对应一个职位(如 'E'、'T' 和 'M'),键对应的值是一个列表,用于存储对应职位的员工对象。这样的数据结构可以方便地按职位对员工进行分组管理。在这个例子中,jobs['T'].append(e)将e添加到组长(Teamleader)列表中。


所以,这两句代码的主要作用是组织和存储员工对象,以便于后续的查询、升级、降级等操作。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-18 15:25:32 | 显示全部楼层    本楼为最佳答案   
这两句代码的目的不是随机生成员工代码,而是将创建的员工对象存储到字典和列表中。这样可以方便地对员工进行查找和管理。

  • mems[uid] = e:这句代码将员工对象e存储到mems字典中,以uid作为键。mems是一个字典,用于存储所有员工对象,可以方便地通过工号(uid)查找员工。每个员工的uid是唯一的,因此可以确保字典中不会出现重复的键。
  • jobs['T'].append(e):这句代码将员工对象e追加到jobs字典中以'T'为键的列表中。jobs字典中的每个键对应一个职位(如 'E'、'T' 和 'M'),键对应的值是一个列表,用于存储对应职位的员工对象。这样的数据结构可以方便地按职位对员工进行分组管理。在这个例子中,jobs['T'].append(e)将e添加到组长(Teamleader)列表中。


所以,这两句代码的主要作用是组织和存储员工对象,以便于后续的查询、升级、降级等操作。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-18 15:27:33 | 显示全部楼层
不是,随即得跟ranom有关
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-24 22:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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