小白00001 发表于 2023-5-31 20:09:22

0:见机行事
1:不同的对象执行不同的操作
2:是,一个是求和,一个是拼接
3:
4:
5:不是

liang_xy 发表于 2023-5-30 21:32:03

有其月 发表于 2023-5-26 20:45:00

#0
"对于不同的对象可以采用同一个方法、函数、运算符来体现多态"
#1
"简化代码增强可读性,实现对不同类型对象的适应使用"
#2
"可以"
#3
"当我看到 一只 像 鸭子 一样走路,像 鸭子 一样 游泳 ,像 鸭子 一样嘎嘎叫的 鸟 ,我就叫它 鸭子"
#4
"降低了耦合"
#5
"是"
#动动手
#0
card=9999
uid_dict={}
E_list,T_list,M_list=[],[],[]
job_dict={}
def main():
    a=Member()
    order=input("1.录入;2.查询;3.升级;4.降级;5.退出:")
    while order!='5':
      if order=="1":
            a.rgi()
      if order=="2":
            a.search()
      if order=="3":
            a.up()
      if order=="4":
            a.down()
      order=input("1.录入;2.查询;3.升级;4.降级;5.退出:")

class Member:
    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):#薪资
      if self.job=="E":
            self.salary=3000+500*self.grade+50*self.year
            return self.salary
      if self.job=="T":
            self.salary=4000+800*self.grade+100*self.year
            return self.salary
      if self.job=="M":
            self.salary=5000+1000*(self.grade+self.year)
            return self.salary
#录入
    def rgi(self):
      global card#main中要有global card=9999
      card+=1
      self.uid=card
      self.name=input("姓名:")
      self.job=input("职位(E.普通员工;T.组长;M.经理):")
      self.year=int(input("工龄:"))
      self.grade=int(input("级别:"))
      if self.job=="E" and self.grade>10:
            self.grade=int(input("该职位最高级别为10,请重新录入级别:"))
      if self.job=="T" and self.grade>6:
            self.grade=int(input("该职位最高级别为6,请重新录入级别:"))
      if self.job=="M" and self.grade>3:
            self.grade=int(input("该职位最高级别为3,请重新录入级别:"))
      self.salary=self.get_salary()
      uid_dict=
      E_list.extend()
      T_list.extend()
      M_list.extend()
      job_dict["E"]=E_list
      job_dict["T"]=T_list
      job_dict["M"]=M_list
      print(f"录入成功!姓名:{self.name},工号:{self.uid},薪资:{self.salary}")
#查询
    def search(self):
      order=input("1.员工查询;2.职位查询:")
      if order=="1":
            card=int(input("请输入工号:"))
            try:
                uid_dict==None
            except KeyError:
                print("该工号不存在!")
            else:
                print(f"姓名:{uid_dict}\n职位:{uid_dict}\n级别:{uid_dict}\n工龄:{uid_dict}\n薪资:{uid_dict}\n")
      if order=="2":
            job=input("职位(E.普通员工;T.组长;M.经理):")
            j_dict={"E":"普通员工","T":"组长","M":"经理"}
            if len(job_dict)==0:
                print(f"目前公司没有{j_dict}")
            else:
                print(f"目前{j_dict}共有{len(job_dict)}人")
                ]
#升级
    def up(self):
      uid=int(input("请输入工号:"))
      x=uid_dict
      print(f"{x},工号:{uid},当前职位:{x}{x},当前薪资:{x}")
      uplevel=int(input("请输入需要增加的级数:"))
      joblevel={"E":10,"T":6,"M":3}
      f=list(joblevel.keys())
      if x+uplevel>joblevel]:
            job_dict.remove(str(self.uid)+"-"+self.name)
            x=f)+1]
            x=1
            self.job=x
            self.grade=x
            self.salary=self.get_salary()
            x=self.salary
            job_dict.append(str(self.uid)+"-"+self.name)
      else:
            x+=uplevel
            self.grade=x
            self.salary=self.get_salary()
            x=self.salary
      print("升级成功!")
      print(f"{x},工号:{uid},升级后职位:{x}{x},升级后薪资:{x}")
#降级
    def down(self):
      uid=int(input("请输入工号:"))
      x=uid_dict
      print(f"{x},工号:{uid},当前职位:{x}{x},当前薪资:{x}")
      downlevel=int(input("请输入需要减少的级数:"))
      joblevel={"E":10,"T":6,"M":3}
      f=list(joblevel.keys())
      if x-downlevel<=0:
            job_dict.remove(str(self.uid)+"-"+self.name)
            x=f)-1]
            x=joblevel]
            self.job=x
            self.grade=x
            self.salary=self.get_salary()
            x=self.salary
            job_dict.append(str(self.uid)+"-"+self.name)
      else:
            x-=downlevel
            self.grade=x
            self.salary=self.get_salary()
            x=self.salary
      print("降级成功!")
      print(f"{x},工号:{uid},降级后职位:{x}{x},降级后薪资:{x}")
    #class Employee(Member,RegistMixin):

   
   

暮雨朝云 发表于 2023-5-26 08:47:22

{:5_90:}

暮雨朝云 发表于 2023-5-25 09:30:47

{:5_90:}

暮雨朝云 发表于 2023-5-24 21:09:10

{:5_90:}

D小二 发表于 2023-5-24 15:56:53

0: show me

李明海 发表于 2023-5-23 21:07:07

.

Banky 发表于 2023-5-23 10:51:07

本帖最后由 Banky 于 2023-5-23 11:33 编辑

0
同一个运算符、函数或对象在不同的场景下,具有不同的作用效果

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 set_grade(self, grade):
      self.grade = grade

    def get_year(self):
      return self.year

    def salary(self):
      return 3000 + 500 * self.grade + 100 * self.year


class Teamleader(Employee):
    def salary(self):
      return 6000 + 800 * self.grade + 200 * self.year


class Manager(Employee):
    def salary(self):
      return 10000 + 1000 * (self.grade + self.year)


def main():
    mems = {}
    jobs = {'E': [], 'T': [], 'M': []}
    uid = 10000
    MAX_E_GRADE = 10
    MAX_T_GRADE = 6
    MAX_M_GRADE = 3

    while True:
      ins = input("\n1.录入;2.查询;3.升级;4.降级;5.退出:")

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

            if job == 'E':
                while grade > MAX_E_GRADE:
                  grade = int(input(f"该职位最高级别为{MAX_E_GRADE},请重新录入级别:"))

                e = Employee(name, job, grade, year, uid)
                mems = e
                jobs['E'].append(e)

            if job == 'T':
                while grade > MAX_T_GRADE:
                  grade = int(input(f"该职位最高级别为{MAX_T_GRADE},请重新录入级别:"))

                e = Teamleader(name, job, grade, year, uid)
                mems = e
                jobs['T'].append(e)

            if job == 'M':
                while grade > MAX_M_GRADE:
                  grade = int(input(f"该职位最高级别为{MAX_M_GRADE},请重新录入级别:"))

                e = Manager(name, job, grade, year, uid)
                mems = e
                jobs['M'].append(e)

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

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

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

                if mems.get(uid):
                  e = mems
                  print(f"姓名:{e.get_name()}")
                  print(f"职位:{e.get_job()}")
                  print(f"级别:{e.get_grade()}")
                  print(f"工龄:{e.get_year()}")
                  print(f"薪资:{e.salary()}")
                else:
                  print("该工号不存在!")

            # 支线功能:职位查询
            if op == '2':
                job = input("职位(E.普通员工;T.组长;M.经理):")

                if job == 'E':
                  if jobs['E']:
                        print(f"目前普通员工共有 {len(jobs['E'])} 人:")
                        for each in jobs['E']:
                            print(f"{each.get_uid()} - {each.get_name()}")
                  else:
                        print("目前公司没有普通员工!")

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

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

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

                name = e.get_name()
                job = e.get_job()
                grade = e.get_grade()
                year = e.get_year()
                old_salary = e.salary()
                n = int(input("请输入需要增加的级数:"))

                if job == 'E':
                  if grade + n > MAX_E_GRADE:
                        # 如果发生职位变化,那么需要创建新的对象,并更新同步两个字典
                        job = 'T'
                        grade = 1
                        jobs['E'].remove(e)# 将jobs中相应职位的对象删除
                        e = Teamleader(name, job, grade, year, uid)# 生成新的对象
                        jobs['T'].append(e)# 添加到jobs中的新职位中
                        mems = e# mems也要相应的旧对象也要被覆盖
                  else:
                        e.set_grade(grade + n)

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

                elif job == 'M':# 注意,这里要用elif,否则上面T变成M之后,还会在这里跑多一遍
                  if grade + n > MAX_M_GRADE:
                        print("已达最高级别!")
                        grade = MAX_M_GRADE
                  else:
                        e.set_grade(grade + n)

                new_salary = e.salary()

                print("升级完毕!")
                print(
                  f"{e.get_name()},工号:{e.get_uid()},升级后职位:{e.get_job()}{e.get_grade()},升级后薪资:{e.salary()}(+{new_salary - old_salary})")
            else:
                print("该工号不存在!")

      # 主线功能:降级
      if ins == '4':
            uid = int(input("请输入工号:"))
            if mems.get(uid):
                e = mems
                print(f"{e.get_name()},工号:{e.get_uid()},当前职位:{e.get_job()}{e.get_grade()},当前薪资:{e.salary()}")

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

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

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

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

                new_salary = e.salary()

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

      # 主线功能:退出
      if ins == '5':
            break


main()

fishC121381 发表于 2023-5-20 19:35:24

0.重写
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_year(self):
      return self.year

    #获取工资
    def salary(self):
      _salary=0
      if self.job == "E":
            _salary=3000+500*self.grade+50*self.year
      elif self.job == "T":
            _salary=4000+800*self.grade+100*self.year
      elif self.job == "M":
            _salary=5000+1000*(self.grade+self.year)
      return _salary

#Manage类
class Manage:
    def __init__(self):
      self.E={}
      self.T={}
      self.M={}
      self.id=10000

#显示菜单
    def menu(self):
      while True:
            n=input("1.录入;2.查询;3.升级;4.降级;5.退出 :")
            if n=="1":
                self.enter()
            elif n=="2":
                self.search()
            elif n=="3":
                self.up_low_grade(1)
            elif n=="4":
                self.up_low_grade(2)
            elif n=="5":
                break
            else:
                print("没有此选项!")

#实现录入功能
    def enter(self):
      name=input("姓名:")
      job=input("职位(E.普通员工;T.组长;M.经理):").upper()
      while True:
            if job !="E" and job !="T" and job != "M":
                job=input("输入错误,请重新输入:").upper()
            else:
                break
      year=int(input("工龄:"))
      grade=int(input("级别:"))
      while True:
            if job=="E":
                if grade>10:
                  grade=int(input("该职位最高级别为10级,请重新录入级别:"))
                else:
                  break
            elif job=="T":
                if grade>6:
                  grade=int(input("该职位最高级别为6级,请重新录入级别:"))
                else:
                  break
            elif job=="M":
                if grade>3:
                  grade=int(input("该职位最高级别为3级,请重新录入级别:"))
                else:
                  break
      employee=Employee(name,job,grade,year,self.id)
      if job=="E":
            self.E=employee
      elif job=="T":
            self.T=employee
      elif job=="M":
            self.M=employee
      print(f"录入成功!姓名:{name},工号:{self.id},薪资:{employee.salary()}")
      self.id+=1
      
      
#实现查询功能
    def search(self):
      n=int(input("1.员工查询;2.职位查询:"))
      while True:
            if n==1:
                k={**self.E,**self.T,**self.M}
                uid=int(input("请输入工号:"))
                if uid not in k:
                  print("该工号不存在!")
                else:
                  print(f"姓名:{k.name}")
                  print(f"职位:{k.job}")
                  print(f"级别:{k.grade}")
                  print(f"工龄:{k.year}")
                  print(f"薪资:{k.salary()}")
                break
            elif n==2:
                j=input("职位(E.普通员工;T.组长;M.经理):").upper()
                if j=="E":
                  if len(self.E)==0:
                        print("目前公司没有普通员工!")
                  else:
                        print(f"目前普通员工有{len(self.E)}人")
                        for k,v in self.E.items():
                            print(f"{k} - {v.name}")
                elif j=="T":
                  if len(self.T)==0:
                        print("目前公司没有组长!")
                  else:
                        print(f"目前普通员工有{len(self.T)}人")
                        for k,v in self.T.items():
                            print(f"{k} - {v.name}")
                elif j=="M":
                  iflen(self.M)==0:
                        print("目前公司没有经理!")
                  else:
                        print(f"目前普通员工有{len(self.M)}人")
                        for k,v in self.M.items():
                            print(f"{k} - {v.name}")
                break
            else:
                n=int(input("请重新输入:"))

#实现升降级功能
    def up_low_grade(self,n):
      if n==1:
            uid=int(input("请输入工号:"))
            k={**self.E,**self.T,**self.M}
            if uid not in k:
                print("未查询到工号!")
            elif uid in self.E:
                print(f"{self.E.name},工号:{uid},当前职位:{self.E.job}{self.E.grade},当前薪资:{self.E.salary()}")
                salary=self.E.salary()
                g=int(input("请输入需要增加的级数:"))
                if 10<self.E.grade+g:
                  self.T=self.E
                  self.E.pop(uid)
                  self.T.job="T"
                  self.T.grade=1
                  print("升级成功!")
                  print(f"{self.T.name},工号:{uid},当前职位:{self.T.job}{self.T.grade},升级后薪资:{self.T.salary()}(+{self.T.salary()-salary})")
                else:
                  self.E.grade+=g
                  print("升级成功!")
                  print(f"{self.E.name},工号:{uid},当前职位:{self.E.job}{self.E.grade},升级后薪资:{self.E.salary()}(+{self.E.salary()-salary})")
            elif uid in self.T:
                print(f"{self.T.name},工号:{uid},当前职位:{self.T.job}{self.T.grade},当前薪资:{self.T.salary()}")
                salary=self.T.salary()
                g=int(input("请输入需要增加的级数:"))
                if 6<self.T.grade+g:
                  self.M=self.T
                  self.T.pop(uid)
                  self.M.job="M"
                  self.M.grade=1
                  print("升级成功!")
                  print(f"{self.M.name},工号:{uid},当前职位:{self.M.job}{self.M.grade},升级后薪资:{self.M.salary()}(+{self.M.salary()-salary})")
                else:
                  self.E.grade+=g
                  print("升级成功!")
                  print(f"{self.T.name},工号:{uid},当前职位:{self.T.job}{self.T.grade},升级后薪资:{self.T.salary()}(+{self.T.salary()-salary})")
            elif uid in self.M:
                if self.M.grade+g<3:
                  self.M.grade+=g
                  print("升级成功!")
                  print(f"{self.M.name},工号:{uid},当前职位:{self.M.job}{self.M.grade},升级后薪资:{self.M.salary()}(+{self.M.salary()-salary})")
                else:
                  print("级数升太多!")
      elif n==2:
            uid=int(input("请输入工号:"))
            k={**self.E,**self.T,**self.M}
            if uid not in k:
                print("未查询到工号!")
            elif uid in self.E:
                print(f"{self.E.name},工号:{uid},当前职位:{self.E.job}{self.E.grade},当前薪资:{self.E.salary()}")
                salary=self.E.salary()
                g=int(input("请输入需要减少的级数:"))
                if self.E.grade-g>0:
                  self.E.grade-=g
                  print("降级成功!")
                  print(f"{self.E.name},工号:{uid},当前职位:{self.E.job}{self.E.grade},降级后薪资:{self.E.salary()}(-{salary-self.E.salary()})")
                else:
                  print("级数降太多!")
            elif uid in self.T:
                print(f"{self.T.name},工号:{uid},当前职位:{self.T.job}{self.T.grade},当前薪资:{self.T.salary()}")
                salary=self.T.salary()
                g=int(input("请输入需要减少的级数:"))
                if self.T.grade-g>0:
                  self.T.grade-=g
                  print("降级成功!")
                  print(f"{self.T.name},工号:{uid},当前职位:{self.T.job}{self.T.grade},降级后薪资:{self.T.salary()}(-{salary-self.T.salary()})")
                else:
                  self.E=self.T
                  self.T.pop(uid)
                  self.E.job="E"
                  self.E.grade=10
                  print("降级成功!")
                  print(f"{self.E.name},工号:{uid},当前职位:{self.E.job}{self.E.grade},降级后薪资:{self.E.salary()}(-{salary-self.E.salary()})")
            elif uid in self.M:
                print(f"{self.M.name},工号:{uid},当前职位:{self.M.job}{self.M.grade},当前薪资:{self.M.salary()}")
                salary=self.M.salary()
                g=int(input("请输入需要减少的级数:"))
                if self.M.grade-g>0:
                  self.M.grade-=g
                  print("降级成功!")
                  print(f"{self.M.name},工号:{uid},当前职位:{self.M.job}{self.M.grade},降级后薪资:{self.M.salary()}(-{salary-self.M.salary()})")
                else:
                  self.T=self.M
                  self.M.pop(uid)
                  self.T.job="T"
                  self.T.grade=6
                  print("降级成功!")
                  print(f"{self.T.name},工号:{uid},当前职位:{self.T.job}{self.T.grade},降级后薪资:{self.T.salary()}(-{salary-self.T.salary()})")
                  
def main():
    m=Manage()
    m.menu()

学医救不了蒙德 发表于 2023-5-18 13:28:52

class Worker:
    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):
      if self.job == "E":
            return 3000 + 500 * int(self.grade) + 50 * int(self.year)
      elif self.job == "T":
            return 4000 + 800 * int(self.grade) + 100 * int(self.year)
      elif self.job == "M":
            return 5000 + 1000 * (int(self.grade) + int(self.year))

class Employee(Worker):
    def __init__(self, name, job, grade, year, uid):
      super().__init__(name, job, grade, year, uid)

class Teamleader(Worker):
    def __init__(self, name, job, grade, year, uid):
      super().__init__(name, job, grade, year, uid)

class Manager(Worker):
    def __init__(self, name, job, grade, year, uid):
      super().__init__(name, job, grade, year, uid)

class Program:
    uid = 10000
    uid_list = {}# uid:iterable
    employee_list = {"E":[], "T":[], "M":[]}# 对录入的员工分类存放
    def register(self):
      name = input("姓名:")
      job = input("职位(E.普通员工;T.组长;M.经理):")
      year = input("工龄:")
      grade = input("级别:")
      # 根据职位对级别进行限制
      if job == "E" and int(grade) > 10:
            grade = input("该职位最高级别为10,请重新录入级别:")
      elif job == "T" and int(grade) > 6:
            grade = input("该职位最高级别为6,请重新录入级别:")
      elif job == "M" and int(grade) > 3:
            grade = input("该职位最高级别为3,请重新录入级别:")
      man = Employee(name, job, grade, year, self.uid)
      self.uid_list = man
      self.employee_list.append(man)
      print("录入成功!姓名:{},工号:{},薪资:{}".format(man.name, man.uid, man.salary()))
      self.uid += 1

    def query(self):
      command = input("1.员工查询;2.职位查询:")
      if command == "1":
            # 员工查询
            uid = int(input("请输入工号:"))
            if self.uid_list.get(uid, False):# 判断输入的工号是否存在
                uid_worker = self.uid_list
                print("姓名:{}\n职位:{}\n级别:{}\n工龄:{}\n薪资:{}\n".format(
                  uid_worker.get_name(),
                  uid_worker.get_job(),
                  uid_worker.get_grade(),
                  uid_worker.get_year(),
                  uid_worker.salary()))
            else:# 工号不存在时打印提示
                print("该工号不存在!")
      elif command == "2":
            # 职位查询
            job = input("职位(E.普通员工;T.组长;M.经理):")
            if len(self.employee_list):
                # 有该职位的员工
                if job == "E":
                  print("目前普通员工共有 {} 人:".format(len(self.employee_list)))
                elif job == "T":
                  print("目前组长共有 {} 人:".format(len(self.employee_list)))
                elif job == "M":
                  print("目前经理共有 {} 人:".format(len(self.employee_list)))
                for each in self.employee_list:
                  print("{} - {}".format(each.get_uid(), each.get_name()))
                print()
            else:
                # 没有该职位的员工
                print("该公司目前没有{}".format(job))

    def level_up(self):
      uid = int(input("请输入工号:"))
      uid_worker = self.uid_list
      b_salary = uid_worker.salary()
      print("{},工号:{}当前职位:{},当前薪资:{}".format(uid_worker.get_name(), uid_worker.get_uid(), uid_worker.get_job()+uid_worker.get_grade(), b_salary))
      up_level = int(input("请输入需要增加的级数:"))
      uid_worker.job, uid_worker.grade = self.if_grade(uid_worker.get_job(), int(uid_worker.get_grade()), up_level)
      print("升级成功!")
      print("{},工号:{}当前职位:{},升级后薪资:{}(+{})".format(uid_worker.get_name(), uid_worker.get_uid(), uid_worker.get_job()+uid_worker.get_grade(), uid_worker.salary(), uid_worker.salary()-b_salary))

    def level_down(self):
      uid = int(input("请输入工号:"))
      uid_worker = self.uid_list
      b_salary = uid_worker.salary()
      print("{},工号:{}当前职位:{},当前薪资:{}".format(uid_worker.get_name(), uid_worker.get_uid(), uid_worker.get_job()+uid_worker.get_grade(), b_salary))
      down_level = -int(input("请输入需要降低的级数:"))
      uid_worker.job, uid_worker.grade = self.if_grade(uid_worker.get_job(), int(uid_worker.get_grade()), down_level)
      print("降级成功!")
      print("{},工号:{}当前职位:{},降级后薪资:{}({})".format(uid_worker.get_name(), uid_worker.get_uid(), uid_worker.get_job()+uid_worker.get_grade(), uid_worker.salary(), uid_worker.salary()-b_salary))

    def if_grade(self, job:str, grade:int, down:int)->tuple:
      if job == "E":
            if grade + down > 10:
                return "T", "1"
            elif grade + down <= 0:
                return "E", "1"
            else:
                return "E", str(grade + down)
      elif job == "T":
            if grade + down > 6:
                return "M", "1"
            elif grade + down <= 0:
                return "T", "10"
            else:
                return "T", str(grade + down)
      elif job == "M":
            if grade + down > 3:
                return "M", "3"
            elif grade + down <= 0:
                return "T", "6"
            else:
                return "M", str(grade + down)

    def system(self):
      while True:
                command = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
                if command == "1":
                  self.register()
                elif command == "2":
                  self.query()
                elif command == "3":
                  self.level_up()
                elif command == "4":
                  self.level_down()
                elif command == "5":
                  break

p = Program()
p.system()

siryang 发表于 2023-5-17 09:46:24

0.继承
1.将不同类型对象以相同方法实现
2.可以
3.双兔傍地走,安能辨我是雄雌
4.降低了耦合
5.不算吧

0.

wakin 发表于 2023-5-14 21:51:05

1

dqx1223 发表于 2023-5-14 20:35:30

1

orangehyh 发表于 2023-5-13 20:20:35

2023.5.13

RainaWin 发表于 2023-5-13 15:31:41

第27天 加油加油加油~

hi我欲成仙 发表于 2023-5-12 20:57:43

7

拉小赫 发表于 2023-5-12 16:25:44

问答题:
0、
1、
2、是的
3、
4、降低了耦合度
5、不是

动动手:
0、
class Member:
    def __init__(self, name, job, grade, year, salary):
      self.name = name
      self.job = job
      self.grade = grade
      self.year = year
      self.salary = salary


class Company:
    def __init__(self):
      self.userid = 10000
      self.infoE = {}
      self.infoT = {}
      self.infoM = {}

    def main(self):
      while True:
            num = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
            if num == "5":
                break
            elif num == "1":
                self.enter()
            elif num == "2":
                self.research()
            elif num == "3":
                self.increase()
            # else:
            #   self.decrease()




    def salary(self, job, grade, year):
      if job == "E":
            salary = 3000 + 500 * grade + 50 * year
      elif job == "T":
            salary = 4000 + 800 * grade + 100 * year
      else:
            salary = 5000 + 1000 * ( grade + year )
      return salary



    def enter(self):
      name = input("姓名:")
      job = input("职位(E.普通员工;T.组长;M.经理):")
      year = int(input("工龄:"))
      grade = int(input("级别:"))
      if job == "E":
            while True:
                if grade > 10:
                  grade = int(input("该职位最高级别为10,请重新录入级别:"))
                else:
                  break
            uid = self.userid
            self.userid += 1
            salary = self.salary(job, grade, year)
            self.infoE = Member(name, job, grade, year, salary)
      elif job == "T":
            while True:
                if grade > 6:
                  grade = int(input("该职位最高级别为6,请重新录入级别:"))
                else:
                  break
            uid = self.userid
            self.userid += 1
            salary = self.salary(job, grade, year)
            self.infoT = Member(name, job, grade, year, salary)
      else:
            while True:
                if grade > 3:
                  grade = int(input("该职位最高级别为3,请重新录入级别:"))
                else:
                  break
            uid = self.userid
            self.userid += 1
            salary = self.salary(job, grade, year)
            self.infoM = Member(name, job, grade, year, salary)
      print("录入成功!姓名:", name, "工号:", uid, "薪资:", salary)


    def research(self):
      num = input("1.员工查询;2.职位查询:")
      if num == "1":
            uid = int(input("请输入工号:"))
            if uid in self.infoE:
                print("姓名:", self.infoE.name)
                print("职位:", self.infoE.job)
                print("级别:", self.infoE.grade)
                print("工龄:", self.infoE.year)
                print("薪资:", self.infoE.salary)
            elif uid in self.infoT:
                print("姓名:", self.infoT.name)
                print("职位:", self.infoT.job)
                print("级别:", self.infoT.grade)
                print("工龄:", self.infoT.year)
                print("薪资:", self.infoT.salary)
            elif uid in self.infoM:
                print("姓名:", self.infoM.name)
                print("职位:", self.infoM.job)
                print("级别:", self.infoM.grade)
                print("工龄:", self.infoM.year)
                print("薪资:", self.infoM.salary)
            else:
                print("该工号不存在!")
      else:
            job = input("职位(E.普通员工;T.组长;M.经理):")
            if job == "E":
                print("目前普通员工有", len(self.infoE), "人:")
                for key, value in self.infoE.items():
                  print(key, "-", value.name)


    def increase(self):
      uid = int(input("请输入工号:"))
      if uid in self.infoE:
            print(self.infoE.name, "工号:", uid, "当前职位:", self.infoE.job, self.infoE.grade,
                  "当前薪资:", self.infoE.salary)
            inc = int(input("请输入需要增加的级数:"))
            if inc + self.infoE.grade > 10:
                self.infoE.job = "T"
                self.infoE.grade = 1
            else:
                self.infoE.grade += inc
      elif uid in self.infoM:
            print(self.infoM.name, "工号:", uid, "当前职位:", self.infoM.job, self.infoM.grade,
                  "当前薪资:", self.infoM.salary)
            inc = int(input("请输入需要增加的级数:"))
            if inc + self.infoT.grade > 6:
                self.infoT.job = "M"
                self.infoT.grade = 1
            else:
                self.infoT.grade += inc
      else:
            print(self.infoT.name, "工号:", uid,"当前职位:", self.infoT.job, self.infoT.grade,
                  "当前薪资:", self.infoT.salary)
            inc = int(input("请输入需要增加的级数:"))
            if inc + self.infoM.grade > 3:
                print("已超过最高级别")
            else:
                self.infoM.grade += inc


    # def decrease(self):


c = Company()
c.main()

温客行 发表于 2023-5-12 15:47:08

0.继承重新
1.对不同的对象做处不同处理,耦合性比较好
2.可以,运算符 +的多态表现
3.看起来像鸭子,跑起来鸭子,叫起来像鸭子那么,就认为他是鸭子
4.降低耦合
5.是

colorfly 发表于 2023-5-8 09:40:27

123
页: 26 27 28 29 30 31 32 33 34 35 [36] 37 38 39 40 41 42 43
查看完整版本: 第063讲:类和对象(VI)| 课后测试题及答案