陈落轩 发表于 2023-2-17 17:03:02

留位,晚点答

surfr 发表于 2023-2-17 07:58:28

答案

青浪 发表于 2023-2-16 14:47:23

0.多态

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.属于

wanglyndon 发表于 2023-2-16 11:09:44

class Mumber:
    def __int__(self , uid , name , job , age , grade):
      self.uid = uid
      self.name = name
      self.job = job
      self.age = age
      self.grade = grade

class Menu:
    def __int__(self):
      self.mumbers = {}
      self.uid = 10000

    def welcome(self):
      while True:
            option = input(" 1. 录入 2. 查询 3. 升级 4. 降级 5. 退出")
            if option == "1":
                pass

    def create_info(self):
      name = input("请输入姓名:")
      while True:
            job = input("请输入职位")
            if job != "E" and job != "T" and job != "M":
                print("输入错误")
                continue
            break
      age = input("请输入级别")
      while True:
            grade = int(input("请输入等级:"))
            if grade >= 7 :
                print("等级最高是六级,请重新输入")
                continue
            break
      mumber = Mumber(self.uid, name ,job ,age ,grade)
      self.mumbers = mumber
      self.uid += 1


不着调先生 发表于 2023-2-15 21:37:09

看看

2360620558 发表于 2023-2-15 11:54:15

本帖最后由 2360620558 于 2023-2-16 23:30 编辑

0.
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.class Staff:
    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, job):
      if job == "E":
            return 3000 + 500 * self.grade + 50 * self.year
      if job == "T":
            return 4000 + 800 * self.grade + 100 * self.year
      if job == "M":
            return 5000 + 1000 * (self.grade + self.year)
      
    def set_job(self, job):
      self.job = job
    def set_grade(self, grade):
      self.grade = grade   

def main():
    uid = 10000
    mans = {}
    jobs = {"E":[], "T":[], "M":[]}
    Emax_grade = 10
    Tmax_grade = 6
    Mmax_grade = 3

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

      if ins == "1":
            name = input("姓名:")
            job = input("职位(E.普通员工;T.组长;M.经理):")
            while job != "E" and job != "T" and job != "M":
                job = input("职位不正确,请重新输入职位(E.普通员工;T.组长;M.经理):")
            year = int(input("工龄:"))
            grade = int(input("级别:"))

            if job == "E":
                while grade > Emax_grade:
                  grade = int(input(f"该职位最高级别是{Emax_grade},请重新录入级别:"))
                e = Staff(name, job, grade, year, uid)
                mans = e
                jobs.append(e)
            
            if job == "T":
                while grade > Tmax_grade:
                  grade = int(input(f"该职位最高级别是{Tmax_grade},请重新录入级别:"))
                e = Staff(name, job, grade, year, uid)
                mans = e
                jobs.append(e)

            if job == "M":
                while grade > Mmax_grade:
                  grade = int(input(f"该职位最高级别是{Mmax_grade},请重新录入级别:"))
                e = Staff(name, job, grade, year, uid)
                mans = e
                jobs.append(e)

            print(f"录入成功!姓名:{name},工号:{uid},薪资:{e.salary(job)}")
            uid += 1
      
      if ins == "2":
            in_ins = input("1.员工查询;2.职位查询:")
            
            if in_ins == "1":
                inp_uid = int(input("请输入工号:"))
                if mans.get(inp_uid):
                  e = mans
                  print(f"姓名:{e.get_name()}")
                  print(f"职位:{e.get_job()}")
                  print(f"级别:{e.get_grade()}")
                  print(f"工龄:{e.get_year()}")
                  print(f"薪资:{e.salary(e.get_job())}")
                else:
                  print("该工号不存在!")

            if in_ins == "2":
                job = input("职位(E.普通员工;T.组长;M.经理):")
                while job != "E" and job != "T" and job != "M":
                  job = input("职位不正确,请重新输入职位(E.普通员工;T.组长;M.经理):")
                if job == "E":
                  if len(jobs):
                        print(f"目前公司普通员工共有 {len(jobs)} 人:)")
                        for each in jobs:
                            print(f"工号:{each.get_uid()} -> 姓名:{each.get_name()},职位:{each.get_grade()}级,薪资:{each.salary(job)}")
                  else:
                        print("目前公司没有普通员工!")

                if job == "T":
                  if len(jobs):
                        print(f"目前公司组长共有 {len(jobs)} 人:)")
                        for each in jobs:
                            print(f"工号:{each.get_uid()} -> 姓名:{each.get_name()},职位:{each.get_grade()}级,薪资:{each.salary(job)}")
                  else:
                        print("目前公司没有组长!")

                if job == "M":
                  if len(jobs):
                        print(f"目前公司经理共有 {len(jobs)} 人:)")
                        for each in jobs:
                            print(f"工号:{each.get_uid()} -> 姓名:{each.get_name()},职位:{each.get_grade()}级,薪资:{each.salary(job)}")
                  else:
                        print("目前公司没有经理!")

      if ins == "3":
            q_uid = int(input("请输入工号:"))
            
            if mans.get(q_uid):
                  e = mans
                  print(f"{e.get_name()},工号:{e.get_uid()},当前职位:{e.get_job()}{e.get_grade()},当前薪资:{e.salary(e.get_job())}")
                  ord_salary = e.salary(e.get_job())
                  up_grade = int(input("请输入需要增加的级数:"))
                  grade = e.get_grade() + up_grade

                  if e.get_job() == "E" and grade > Emax_grade:
                        job = "T"
                        grade = 1
                        jobs["E"].remove(e)
                        e.set_job(job)
                        e.set_grade(grade)
                        jobs["T"].append(e)
                           
                  elif e.get_job() == "T" and grade > Tmax_grade:
                        job = "M"
                        grade = 1
                        jobs["T"].remove(e)
                        e.set_job(job)
                        e.set_grade(grade)
                        jobs["M"].append(e)

                  elif e.get_job() == "M" and grade > Mmax_grade:
                        print("该职位最高级别是 3 级!")
                        e.set_grade(Mmax_grade)
                  
                  else:
                        e.set_grade(grade)
                  print("升级成功!")
                  print(f"{e.get_name()},工号:{q_uid},升级后的职位:{e.get_job()}{e.get_grade()},升级后的薪资:{e.salary(e.get_job())}(+{e.salary(e.get_job()) - ord_salary})")
            else:
                print("该工号不存在!")


      if ins == "4":
            q_uid = int(input("请输入工号:"))

            if mans.get(q_uid):
                e = mans.get(q_uid)
                print(f"{e.get_name()},工号:{e.get_uid()},当前职位:{e.get_job()}{e.get_grade()},当前薪资:{e.salary(e.get_job())}")
                ord_salary = e.salary(e.get_job())
                dm_grade = int(input("请输入需要降低的级数:"))
                grade = e.get_grade() - dm_grade

                if e.get_job() == "E" and grade < 1:
                  print("该职位最低级别是 1 级!")
                  grade = 1
                  e.set_grade(grade)

                if e.get_job() == "T" and grade < 1:
                  job = "E"
                  grade = Emax_grade
                  jobs["T"].remove(e)
                  e.set_job(job)
                  e.set_grade(grade)
                  jobs["E"].append(e)
               
                if e.get_job() == "M" and grade < 1:
                  job = "T"
                  grade = Tmax_grade
                  jobs["M"].remove(e)
                  e.set_job(job)
                  e.set_grade(grade)
                  jobs["T"].append(e)
               
                else:
                  e.set_grade(grade)
                print("降级成功!")
                print(f"{e.get_name()},工号:{q_uid},降级后的职位:{e.get_job()}{e.get_grade()},降级后的薪资:{e.salary(e.get_job())}({e.salary(e.get_job()) - ord_salary})")
            else:
                print("该工号不存在!")
      
      if ins == "5":
            break
main()

Eden00 发表于 2023-2-15 07:27:37

0 通过对主类的集成,并在子类中修改,每一个子类增添相对于本子类输入类型的方法,实现多态
1 可以接口不变,覆盖更多的输入类型或者处理方法
2 可以的,+和体现了多态
3 我看它走路像鸭子,游泳像鸭子,叫声像鸭子,那这只鸟就是鸭子
4 增强了内聚?
5 不是,单纯的默认参数

Lethe-- 发表于 2023-2-14 19:47:44

1

杉333 发表于 2023-2-13 21:34:23

1

不老松 发表于 2023-2-13 19:36:18

瞅瞅

Tzz123 发表于 2023-2-11 21:59:18

class People:
    num = 0
    count = 10000
    l = ["E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "E10", "T1", "T2", "T3", "T4", "T5", "T6", "M1", "M2", "M3"]
    d = {"E":"普通员工", "T":"组长", "M":"经理"}
   
    def __init__(self, uid, name, job, grade, year, salary, num):
      self.uid = uid
      self.name = name
      self.job = job
      self.grade = grade
      self.year =year
      self.salary = salary
      self.num = num
    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):
      return self.salary
    def get_num(self):
      return self.num
   
def main():
    inf = []
    while True:
      x = int(input("1.录入;2.查询;3.升级;4.降级;5.退出:"))
      if x == 1:
            inf.append(write())
            continue
      elif x == 2:
            find(inf)
            continue
      elif x == 3:
            upgrade(inf)
            continue
      elif x == 4:
            downgrade(inf)
            continue
      else:
            break
            
def write():
    name = input("姓名:")
    job = input("职位(E.普通员工;T.组长;M.经理):")
    if job != "E" and job != "T" and job != "M":
      print(f"本公司没有{job}职务哦~")
      print()
      return
    year = int(input("工龄:"))
    grade = get_grade(job)
    s = salary(job, grade, year)
    print(f"录入成功!姓名:{name}, 工号:{People.count}, 薪资:{s}")
    People.count += 1
    People.num += 1
    print()
    return People(People.count-1, name, job, grade, year, s, People.num-1)
      
def find(inf):
    f = int(input("1.员工查询;2.职位查询:"))
    if f == 1:
      count = 0
      uid = int(input("请输入工号:"))   
      for each in inf:
            if uid == each.get_uid():
                count += 1
                print(f"姓名:{each.name}")
                print(f"职位:{each.job}")
                print(f"级别:{each.grade}")
                print(f"工龄:{each.year}")
                print(f"薪资:{each.salary}")
      if count == 0:
            print("该工号不存在!")
      print()
    elif f == 2:
      count = 0
      jobb = input("职位(E.普通员工;T.组长;M.经理):")
      if jobb != "E" and jobb != "T" and jobb != "M":
            print(f"本公司没有{jobb}职务哦~")
            print()
            return
      for each in inf:
            if jobb in each.job:
                count += 1
                print(f"第{count}位:{each.uid} - {each.name}")
      if count == 0:
            print(f"目前公司没有{each.d}!")
      else:
            print(f"目前{each.d}共有{count}人。")
      print()
    else:
      print("请输入正确的查询方式~")
      print()
    return

def upgrade(inf):
    uid = int(input("请输入工号:"))
    count = 0
    i = 0
    for each in inf:
      if uid == each.get_uid():
            count += 1
            now_grade_letter = each.get_job()
            now_grade_number = each.get_grade()
            list_num = each.get_num()
            print(f"{each.get_name()},工号:{each.get_uid()}, 当前职位:{each.get_job()}{each.get_grade()}, 当前薪资:{each.get_salary()}")
    if count == 0:
      print("该工号不存在!")
      return
    num = int(input("请输入需要增加的级数:"))
    now_grade = now_grade_letter + str(now_grade_number)
    while i < len(People.l):
      if People.l == now_grade:
            if i + num >= len(People.l):
                print("升级失败!已超出本公司职位的最大等级!")
                return
            else:
                print("升级成功!")
                x = list(People.l)
                inf.job = x
                inf.grade = int(x)
                s = inf.salary
                inf.salary = salary(x, int(x), inf.get_year())
                print(f"{inf.get_name()},工号:{inf.get_uid()}, 升级后职位:{People.l}, 升级后薪资:{inf.get_salary()}(+{inf.get_salary()-s})")
                print()
      i += 1
    return

def downgrade(inf):
    uid = int(input("请输入工号:"))
    count = 0
    i = 0
    for each in inf:
      if uid == each.get_uid():
            count += 1
            now_grade_letter = each.get_job()
            now_grade_number = each.get_grade()
            list_num = each.get_num()
            print(f"{each.get_name()},工号:{each.get_uid()}, 当前职位:{each.get_job()}{each.get_grade()}, 当前薪资:{each.get_salary()}")
    if count == 0:
      print("该工号不存在!")
      return
    num = int(input("请输入需要减少的级数:"))
    now_grade = now_grade_letter + str(now_grade_number)
    while i < len(People.l):
      if People.l == now_grade:
            if i - num <= 0:
                print("降级失败!已超出本公司职位的最小等级!")
                print()
                return
            else:
                print("降级成功!")
                x = list(People.l)
                inf.job = x
                inf.grade = int(x)
                s = inf.salary
                inf.salary = salary(x, int(x), inf.get_year())
                print(f"{inf.get_name()},工号:{inf.get_uid()}, 降级后职位:{People.l}, 降级后薪资:{inf.get_salary()}(-{s-inf.get_salary()})")
                print()
      i += 1
    return

def get_grade(job,):
    while True:
      grade = int(input("级别:"))
      if job == "E":
            if grade <= 10 and grade > 0:
                return grade
            else:
                print("该职位最高级别为10,请重新录入级别:")
                continue
      if job == "T":
            if grade <= 6 and grade > 0:
                return grade
            else:
                print("该职位最高级别为6,请重新录入级别:")
                continue
      if job == "M":
            if grade <= 3 and grade > 0:
                return grade
            else:
                print("该职位最高级别为3,请重新录入级别:")
                continue

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

main()

wangqingbo 发表于 2023-2-11 10:18:27

谢谢

a2272497309 发表于 2023-2-8 23:24:44

666666666666

jhuang88 发表于 2023-2-8 19:47:47

class Emp:

   def get_uid(self,uid):            
            self.uid=uid
            return self.uid

   def get_name(self,name):            
            self.name=name
            return self.name

   def get_job(self,job):            
            self.job=job
            return self.job

   def get_grade(self,grade):            
            self.grade=grade
            return self.grade

   def get_year(self,year):            
            self.year=year
            return self.year

   def salary(self):            
            if self.job=='经理':
               return 5000+1000*(self.grade+self.year)

            if self.job=='组长':
               return 4000+800*self.grade+100*self.year

            if self.job=='普通员工':
               return 3000+500*self.grade+50*self.year

def shenzhi(x,i):         
    gra=g-x
    jo=j
    year=y
    name=n
    sa=s
    if gra<1:
      gra=1
      x= g-1
      job="经理"
    elif gra<4:
      job="经理"
    elif gra<7:
      job="组长"
    else:
      job="普通员工"
   
    if job==jo:
      j=m.get_job(job)
      g=m.get_grade(gra)      
      m.get_year(year)
      
      y=m.salary()
      ic=m.salary()-sa
      

    elif job!=jo & x>0:
       if job=="经理":
         gra=3
       else:
         gra=6
       j=m.get_job(job)
       g=m.get_grade(gra)      
       m.get_year(year)
      
       y=m.salary()
       ic=m.salary()-sa

   

    elif job!=jo & x<0:
       if job=="组长":
         gra=4
       else:
         gra=10
       j=m.get_job(job)
       g=m.get_grade(gra)      
       m.get_year(year)
       m.get_uid(uid)
       y=m.salary()
       ic=m.salary()-sa

    print(f"调整级别后:{m.get_name(name)}的等级为{m.get_grade(gra)},职位为{m.get_job(job)},薪资:{m.salary()}({ic})")

def main():
   uid=10000
   menu=input("1.录入;2.查询;3.升级;4.降级;5.退出:")
   m=Emp()
   n=[]
   j=[]
   g=[]
   y=[]
   u=[]
   s=[]

   while menu !="5":
      
            
         if menu=='1':
            name=input('姓名:')
            job=input('职位:')
            grade=0
            while grade==0:
                  ifjob=="经理":
                     grade=int(input('级别:'))
                     while grade>3:
                         grade=int(input("该职位级别最高为3,请重新输入:"))
                  elif job=="组长":
                        grade=int(input('级别:'))
                        while grade<3 or grade>6:
                            grade=int(input("该职位级别4~6,请重新输入:"))
                  elif job=="普通员工":
                        grade=int(input('级别:'))
                        while grade<6 or grade>10:
                            grade=int(input("该职位级别7~10,请重新输入:"))
                  else:
                        job=input("请输入正确的职位")
                        grade=0

            year=int(input('工龄:'))
                  
            uid+=1
            
            n.append(m.get_name(name))
            j.append(m.get_job(job))
            g.append(m.get_grade(grade))
            y.append(m.get_year(year))
            u.append(m.get_uid(uid))
            s.append(m.salary())
            print(f"录入成功!姓名:{m.get_name(name)},工号:{m.get_uid(uid)},薪资:{m.salary()}")
            menu=input("1.录入;2.查询;3.升级;4.降级;5.退出:")

         elif menu=='2':
            find=input("1.员工查询; 2.职位查询:")
            if find=="1":
               i=int(input("请输入员工编号:"))
               while i not in u:
                      i=int(input("你所查找的编号不存在,请重新输入:"))
               num=u.index(i)
               print("您查询的员工信息如下:")
               print('姓名:', n)
               print('职位:', j)
               print('等级:', g)
               print('工龄:', y)
               print('薪资:', s)
            if find=='2':
               x=input("请输入职位:")
               id1 =
               if len(id1)==0:
                   print(f"目前公司还没有{x}")
               else:
                   print(f"目前{x}共有{len(id1)}人")
                   for i in id1:
                        print(f"姓名:{n};工号:{u}")
            menu=input("1.录入;2.查询;3.升级;4.降级;5.退出:")

         elif menu=="3":
            i=int(input("请输入员工编号:"))
            x=int(input("请输入调整等级:"))
            while x>4:
                  x=int(input("最大调整等级为7,请重新输入:"))
            gra=g-x
            jo=j
            year=y
            name=n
            sa=s
            if gra<1:
                  gra=1
                  x= g-1
                  job="经理"
            elif gra<4:
                  job="经理"
            elif gra<7:
               job="组长"
            else:
               job="普通员工"

            if job==jo:
               j=m.get_job(job)
               g=m.get_grade(gra)      
               m.get_year(year)
               grade=gra      
               y=m.salary
               ic=m.salary()-sa
            
            elif job!=jo:
               if job=="经理":
                  gra=3
               else:
                  gra=6
               j=m.get_job(job)
               g=m.get_grade(gra)      
               m.get_year(year)
               grade=gra      
               y=m.salary()
               ic=m.salary()-sa
            print(f"调整级别后:{m.get_name(name)}的等级为{m.get_grade(gra)},职位为{m.get_job(job)},薪资:{m.salary()}({ic})")
            menu=input("1.录入;2.查询;3.升级;4.降级;5.退出:")

         elif menu=="4":
            i=int(input("请输入员工编号:"))
            x=int(input("请输入调整等级:"))
            while x>4:
                  x=int(input("最大调整等级为7,请重新输入:"))
            x=-x
            shenzhi(x,i)            
                     

            
main()               
      
            

Conceiver 发表于 2023-2-8 13:50:03

新年好

dragongirlcqw 发表于 2023-2-8 13:46:33

# 员工类
class Staff:
    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):
      pass

# 普通员工类
class Employee(Staff):
    def salary(self):
      return 3000 + 500 * self.grade + 50 * self.year

# 组长类
class Teamleader(Staff):
    def salary(self):
      return 4000 + 800 * self.grade + 100 * self.year

# 经理类
class Manager(Staff):
    def salary(self):
      return 5000 + 1000 * (self.grade + self.year)

# 管理程序功能类
class Manage():
    def __init__(self):
      self.staffs = {}
      self.uid = 10000 # 工号自动分配,由10000开始
      self.grade_max_E = 10
      self.grade_max_T = 6
      self.grade_max_M = 3

    # 程序主入口
    def welcome(self):
      while True:
            func = int(input("\n1.录入;2.查询;3.升级;4.降级;5.退出:"))
            if func == 1:
                self.enter()
            if func == 2:
                self.inquiry()
            if func == 3:
                self.promote()
            if func == 4:
                self.demote()
            if func == 5:
                break

    def check_grade(self, job, grade):
      while True:
            if job == 'E' and grade > self.grade_max_E:
                grade = int(input(f"该职位最高级别为{self.grade_max_E},请重新录入级别:"))
            elif job == 'T' and grade > self.grade_max_T:
                grade = int(input(f"该职位最高级别为{self.grade_max_T},请重新录入级别:"))
            elif job == 'M' and grade > self.grade_max_M:
                grade = int(input(f"该职位最高级别为{self.grade_max_M},请重新录入级别:"))
            else:
                break
      return grade

    # 录入员工数据功能
    def enter(self):
      name = input("姓名:")
      job = input("职位(E.普通员工;T.组长;M.经理):")
      year = int(input("工龄:"))
      grade = int(input("级别:"))
      grade = self.check_grade(job, grade)

      if job == 'M':
            self.staffs = Manager(name, job, grade, year, self.uid)
      if job == 'E':
            self.staffs = Employee(name, job, grade, year, self.uid)
      if job == 'T':
            self.staffs = Teamleader(name, job, grade, year, self.uid)

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

    # 查询功能
    def inquiry(self):
      func = int(input("1.员工查询;2.职位查询:"))
      if func == 1:
            uid = int(input("请输入工号:"))
            if not self.staffs.get(uid):
                print("该工号不存在!")
            else:
                print(f"姓名:{self.staffs.name}")
                print(f"职位:{self.staffs.job}")
                print(f"级别:{self.staffs.grade}")
                print(f"工龄:{self.staffs.year}")
                print(f"薪资:{self.staffs.salary()}")
      if func == 2:
            job = input("职位(E.普通员工;T.组长;M.经理):")
            count = 0
            _ = []
            for each in self.staffs.values():
                if each.job == job:
                  count += 1
                  _.append(each.uid)
            if count == 0:
                if job == 'E':
                  print("目前公司没有普通员工!")
                elif job == 'T':
                  print("目前公司没有组长!")
                elif job == 'M':
                  print("目前公司没有经理!")
            else:
                print(f"目前普通员工共有{count}人:")
                for i in range(count):
                  print(f"{_} - {self.staffs].name}")

    # 程序升级功能
    def promote(self):
      uid = int(input("请输入工号:"))
      if not self.staffs.get(uid):
            print("该工号不存在!")
      else:
            print(f"{self.staffs.name},工号:{uid},当前职位:{self.staffs.job}{self.staffs.grade},当前薪资:{self.staffs.salary()}")
            promote_grade = int(input("请输入需要增加的级数:"))
            salary_old = self.staffs.salary()

            if self.staffs.job == 'T' and (self.staffs.grade + promote_grade) > self.grade_max_T:
                self.staffs = Manager(self.staffs.name, 'M', 1, self.staffs.year, uid)
            elif self.staffs.job == 'E' and (self.staffs.grade + promote_grade) > self.grade_max_E:
                self.staffs = Teamleader(self.staffs.name, 'T', 1, self.staffs.year, uid)
            elif self.staffs.job == 'M' and (self.staffs.grade + promote_grade) > self.grade_max_M:
                self.staffs.grade = self.grade_max_M
            else:
                self.staffs.grade += promote_grade

            salary_d = self.staffs.salary() - salary_old
            print("升级成功!")
            print(f"{self.staffs.name},工号:{uid},升级后职位:{self.staffs.job}{self.staffs.grade},升级后薪资:{self.staffs.salary()}(+{salary_d})")

    # 程序降级功能
    def demote(self):
      uid = int(input("请输入工号:"))
      if not self.staffs.get(uid):
            print("该工号不存在!")
      else:
            print(f"{self.staffs.name},工号:{uid},当前职位:{self.staffs.job}{self.staffs.grade},当前薪资:{self.staffs.salary()}")
            demote_grade = int(input("请输入需要减少的级数:"))
            salary_old = self.staffs.salary()

            if self.staffs.job == 'T' and (self.staffs.grade - demote_grade) < 1:
                self.staffs = Employee(self.staffs.name, 'E', self.grade_max_E, self.staffs.year, uid)
            elif self.staffs.job == 'E' and (self.staffs.grade - demote_grade) < 1:
                self.staffs.grade = 1
            elif self.staffs.job == 'M' and (self.staffs.grade - demote_grade) < 1:
                self.staffs = Teamleader(self.staffs.name, 'T', self.grade_max_T, self.staffs.year, uid)
            else:
                self.staffs.grade -= demote_grade

            salary_d = salary_old - self.staffs.salary()
            print("降级成功!")
            print(
                f"{self.staffs.name},工号:{uid},降级后职位:{self.staffs.job}{self.staffs.grade},降级后薪资:{self.staffs.salary()}(-{salary_d})")

# 主程序接口
def main():
    m = Manage()
    m.welcome()

main()

dragongirlcqw 发表于 2023-2-7 23:38:23

问答题:
0. Python 允许在子类中定义与父类同名的方法,即重写,通过重写,Python体现了面向对象的多态特性
1. 可以在不修改源代码情况下实现不同场景下的运算调用
2. 可以
3. 不知道
4. 低耦合
5. 不是

动动手:

六脉神剑真厉害 发表于 2023-2-7 17:25:01

1

835565975 发表于 2023-2-7 10:05:22

1

sherry.she 发表于 2023-2-6 19:53:55

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