ike20180307 发表于 2023-11-16 21:17:36

1

顾冷985 发表于 2023-11-15 19:24:43

孙花花 发表于 2023-11-15 09:16:23

查看参考答案

Anonymous 发表于 2023-11-11 19:42:55

0.o

灾祸之火 发表于 2023-11-10 20:16:47

图一时之快

gjh121212 发表于 2023-11-10 09:52:24

1

yangxu_sky 发表于 2023-11-8 16:06:54

全世界谁倾听你 发表于 2023-11-8 10:31:11

YnZon 发表于 2023-11-7 20:12:41

洋洋洋洋

淡水酸菜鱼 发表于 2023-11-7 16:56:05

动动手:
0、'''企业员工'''
class Person:
    name = ''
    job = ''
    grade = 0
    year = 0
    uid = 0
    def get_uid(self,inname):
      c = U.index(inname)
      print(f'工号:{U}')
    def get_name(self,inuid):
      c = U.index(inuid)
      print(f'姓名:{N}')
    def get_job(self,inuid):
      c = U.index(inuid)
      print(f'职位:{J}')
    def get_grade(self,inuid):
      c = U.index(inuid)
      print(f'级别:{G}')
    def get_year(self,inuid):
      c = U.index(inuid)
      print(f'工龄:{A}')
    def salary(self):
      pass

class Employee(Person):
    def __init__(self,name,job,age,grade):
      self.name = name
      self.job = job
      self.age = age
      self.grade = grade
    def salary(self):
      return 3000 + 500 * self.grade + 50 * self.age

class Teamleader(Person):
    def __init__(self,name,job,age,grade):
      self.name = name
      self.job = job
      self.age = age
      self.grade = grade
    def salary(self):
      return 4000 + 800 * self.grade + 100 * self.age

class Manager(Person):
    def __init__(self,name,job,age,grade):
      self.name = name
      self.job = job
      self.age = age
      self.grade = grade
    def salary(self):
      return 5000 + 1000 * (self.grade + self.age)
   
N = []
J = []
G = []
A = []
U = []
S = []

def main():
    i = 10000
    j = 0
    while True:
      num = int(input('1.录入;2.查询;3.升级;4.降级;5.退出:'))
      if num == 1:            
            name = input('姓名:')
            job = input('职位(E.普通员工;T.组长;M.经理):')
            age = int(input('工龄:'))
            grade = int(input('级别:'))
            if job == 'E':
                while grade > 10:
                  grade = int(input('该职位最高级别为10,请重新输入:'))
                z = Employee(name,job,age,grade)
            elif job == 'T':
                while grade > 6:
                  grade = int(input('该职位最高级别为6,请重新输入:'))
                z = Teamleader(name,job,age,grade)
            elif job == 'M':
                while grade > 3:
                  grade = int(input('该职位最高级别为3,请重新输入:'))
                z = Manager(name,job,age,grade)
            S.append(z.salary())
            N.append(z.name)
            A.append(z.age)
            J.append(z.job)
            G.append(z.grade)
            U.append(i)
            i += 1
            print(S,N,A,J,G,U)
            print(f'录入成功!姓名:{N},工号:{U},薪资:{S}')
            j += 1
            
      elif num == 2:
            num2 = int(input('1.员工查询;2.职位查询:'))
            if num2 == 1:
                uid = int(input('请输入工号:'))
                if U.count(uid) == 0:
                  print('该工号不存在!')
                  continue
                Person().get_name(uid)
                Person().get_job(uid)
                Person().get_grade(uid)
                Person().get_year(uid)
                if G == 'E':
                  print('薪资:',Employee().salary())
                elif G == 'T':
                  print('薪资:',Teamleader().salary())
                elif G == 'M':
                  print('薪资:',Manager().salary())
            elif num2 == 2:
                jobin = input('职位(E.普通员工;T.组长;M.经理):')
                if J.count(jobin) == 0:
                  print('输入错误!')
                  continue
                if jobin == 'M':
                  c = J.count(jobin)
                  q = 0
                  print(f'目前经理共有{c}人')
                  while q < len(J):
                        if J == 'M':                           
                            print(U,end = ' ')
                            print('-',end = ' ')
                            print(N)
                        q += 1
                elif jobin == 'T':
                  c = J.count(jobin)
                  q = 0
                  print(f'目前组长共有{c}人')
                  while q < len(J):
                        if J == 'T':                           
                            print(U,end = ' ')
                            print('-',end = ' ')
                            print(N)
                        q += 1
                elif jobin == 'E':
                  c = J.count(jobin)
                  q = 0
                  print(f'目前普通员工共有{c}人')
                  while q < len(J):
                        if J == 'E':                           
                            print(U,end = ' ')
                            print('-',end = ' ')
                            print(N)
                        q += 1
               
      elif num == 3:
            pass
      elif num == 4:
            pass
      elif num == 5:
            break

淡水酸菜鱼 发表于 2023-11-7 15:32:46

问答题:
0、对某些运算符或函数传入不同类型的参数,输出结果经过的操作也不同
1、根据实际情况调整输出
2、可以
3、一只鸟走起来像鸭子、游起来像鸭子、叫起来像鸭子,那么它就是鸭子
4、高内聚
5、不属于

swj520qll 发表于 2023-11-6 21:19:48

继续加油

luxd6880 发表于 2023-11-6 10:55:45

抄抄抄

adsl9999 发表于 2023-11-5 14:38:32

63

Lewis613 发表于 2023-11-1 19:04:38

1

WildPigKing 发表于 2023-10-28 16:29:55

aaaa

suhan1988 发表于 2023-10-27 08:32:24

1

meilin1030 发表于 2023-10-26 16:25:40

动手:
class Staff:
    uid_ori = 10000
    def __init__(self,name,job,grade,year,uid,salary):
      self.name=name
      self.job=job
      self.grade=grade
      self.year=year
      self.uid=uid
      self.salary=salary
class Enter:#录入
    # def __init__(self):
    #   self.uid_ori = 10000
    def get_name(self):
      self.name=input('姓名 :')
    def get_job(self):
      while True:
            self.job=input('职位(E.普通员工 T.组长 M.经理) :')
            if self.job!='E' and self.job!='T' and self.job!='M':
                print ('重新输入!')
                continue
            break
    def get_grade(self):
      while True:
            self.grade=input('级别 :')
            if self.grade.isalpha() or int(self.grade)<=0:
                print('重新输入!')
                continue
            if self.job=='E':
                if int(self.grade) >10:
                  print('该职位最高级别为10,重新输入!')
                  continue
                else:
                  break
            elif self.job=='T':
                if int(self.grade) > 6:
                  print('该职位最高级别为6,重新输入!')
                  continue
                else:
                  break
            elif self.job=='M':
                if int(self.grade) > 3:
                  print('该职位最高级别为3,重新输入!')
                  continue
                else:
                  break
    def get_year(self):
      while True:
            self.year=input('工龄 :')
            if self.year.isdecimal():
                break
            else:
                print('重新输入!')
    def get_uid(self):
      self.uid=Staff.uid_ori
      Staff.uid_ori+=1
    def salary(self):
      if self.job=='E':
            self.salary = 3000+500*int(self.grade)+50*int(self.year)
      if self.job=='T':
            self.salary = 4000+800*int(self.grade)+100*int(self.year)
      if self.job=='M':
            self.salary = 5000+1000*(int(self.grade)+int(self.year))

class Query:#查询
    def query(self):
      while True:
            query_judge = False
            query=input('1.员工查询 2.职位查询 3.返回 :')
            if query=='1':
                order_que = input('请输入工号 :')
                for item in staff_info:
                  if int(order_que) == item.uid:
                        print(f'姓名:{item.name}\n职位:{item.job}\n级别:{item.grade}\n'
                              f'工龄:{item.year}\n工资:{item.salary}')
                        query_judge = True
                        break
                if not query_judge:
                  print('该工号不存在!')
            elif query=='2':
                job_count = []
                order_que = input('请输入职位(E.普通员工 T.组长 M.经理) :')
                for item in staff_info:
                  if order_que == item.job:
                        job_count.append(item)
                print(f'目前该职位共 {len(job_count)} 人')
                for item in job_count:
                  print(f'{item.uid}--{item.name}')

            elif query == '3':
                break
            else:
                print('请重输')
class Promotion:#升职
    def promotion(self):
      while True:
            p_uid=input('请输入工号 :')
            if p_uid.isdecimal():
                for item in staff_info:
                  if int(p_uid) == item.uid:
                        print(f'{item.name},工号:{item.uid},'
                              f'当前职位{item.job}{item.grade},当前薪资:{item.salary}')
                        while True:
                            p_grade = input('请输入提升的级数 :')
                            if p_grade.isdecimal():
                              new_grade=int(p_grade) + int(item.grade) #暂时这样后期看是否需要转str
                              if item.job == 'E':
                                    if new_grade>10:
                                        item.job = 'T'
                                        item.grade = '1'
                                    else:
                                        item.grade=new_grade #这里也没转str
                              elif item.job == 'T':
                                    if new_grade > 6:
                                        item.job = 'M'
                                        item.grade = '1'
                                    else:
                                        item.grade = new_grade
                              else:
                                    if new_grade>3:
                                        print('升到顶了,再升就功高盖主了!')
                                        item.grade='3'
                                    else:
                                        item.grade=new_grade
                              if item.job == 'E':
                                    item.salary = 3000 + 500 * int(item.grade) + 50 * int(item.year)
                              if item.job == 'T':
                                    item.salary = 4000 + 800 * int(item.grade) + 100 * int(item.year)
                              if item.job == 'M':
                                    item.salary = 5000 + 1000 * (int(item.grade) + int(item.year))
                              print(f'{item.name},工号:{item.uid},'
                                    f'升级后的职位:{item.job}{item.grade},升级后的薪资:{item.salary}')
                              break
                            else:
                              print('重新输入提升的级数!')
                break
            else:
                print('重新输入工号!')
class Demoted: #降职
    def demoted(self):
      while True:
            d_uid=input('请输入工号 :')
            if d_uid.isdecimal():
                for item in staff_info:
                  if int(d_uid) == item.uid:
                        print(f'{item.name},工号:{item.uid},'
                              f'当前职位{item.job}{item.grade},当前薪资:{item.salary}')
                        while True:
                            p_grade = input('请输入降低的级数 :')
                            if p_grade.isdecimal():
                              new_grade=int(item.grade) - int(p_grade) #暂时这样后期看是否需要转str
                              if item.job == 'M':
                                    if new_grade <= 0:
                                        item.job = 'T'
                                        item.grade = '6'
                                    else:
                                        item.grade=new_grade #这里也没转str
                              elif item.job == 'T':
                                    if new_grade <= 0:
                                        item.job = 'E'
                                        item.grade = '10'
                                    else:
                                        item.grade = new_grade
                              else:
                                    if new_grade <= 0:
                                        print('降到底了,可以滚蛋了!')
                                        item.grade='1'
                                    else:
                                        item.grade=new_grade
                              if item.job == 'E':
                                    item.salary = 3000 + 500 * int(item.grade) + 50 * int(item.year)
                              if item.job == 'T':
                                    item.salary = 4000 + 800 * int(item.grade) + 100 * int(item.year)
                              if item.job == 'M':
                                    item.salary = 5000 + 1000 * (int(item.grade) + int(item.year))
                              print(f'{item.name},工号:{item.uid},'
                                    f'降级后的职位:{item.job}{item.grade},降级后的薪资:{item.salary}')
                              break
                            else:
                              print('重新输入降低的级数!')
                break
            else:
                print('重新输入工号!')


staff_info=[] #员工信息列表
def main():
    while True:
      order = input('1.录入 2.查询 3.升级 4.降级 5.退出 :')
      if order == '1':
            enter = Enter()
            enter.get_name()
            enter.get_job()
            enter.get_grade()
            enter.get_year()
            enter.get_uid()
            print(enter.uid)
            enter.salary()
            staff = Staff(enter.name, enter.job, enter.grade, enter.year, enter.uid, enter.salary)
            staff_info.append(staff)
            print(f'录入成功 ! 姓名:{staff.name},工号:{staff.uid},薪资:{staff.salary}')
            pass
      elif order == '2':
            query=Query()
            query.query()
      elif order == '3':
            promotion=Promotion()
            promotion.promotion()
      elif order == '4':
            demoted=Demoted()
            demoted.demoted()
      elif order == '5':
            break
      else:
            print('请重输!')
main()

刘jcccccc 发表于 2023-10-26 15:31:29

1

FoolZenYin_甫寸 发表于 2023-10-26 15:08:38

本帖最后由 FoolZenYin_甫寸 于 2023-10-30 15:53 编辑

0.只要符合调用的方法名,不管类长啥样都给调用运行多态在编程是一个非常重要的概念,它是指同一个运算符、函数或者对象在不同的场景下,具有不同的作用效果
1.只要符合调用的方法名,不管类长啥样都给调用运行提高代码的灵活性
2.可以的 √
3.有一只鸟他长得想鸭子,跟鸭子一样的翅膀和鸭子一样游泳,那么我们称之为鸭子√
4.降低了耦合,因为只要方法属性名相同即可调用,那么更方便引用调用√
5.不属于,如果是增加了字符串类型还能说明是的,属于函数层面的多态现象。
动动手
#甫寸版权所有嘻嘻#
class Base_info:
    def __init__(self, name, job, grade, year, salary):
      self.name = name
      self.job = job
      self.grade = grade
      self.year = year
      self.salary = salary
      
class Employee(Base_info):
    def __init__(self, name, grade, year):
      super().__init__(name, "E", grade, year, 3000 + 500 * int(grade) + 50 * int(year))
class Teamleader(Base_info):
    def __init__(self, name, grade, year):
      super().__init__(name, "T", grade, year, 4000 + 800 * int(grade) + 100 * int(year))
class Manager(Base_info):
    def __init__(self, name, grade, year):
      super().__init__(name, "M", grade, year, 5000 + 1000 * (int(grade) +   int(year)))
   
class Grade_checkMixin:
    def grade_check(self, job, grade):
      if job == "E":
            if int(grade) > 10:
                print("超出等级!")
            else:
                return "pass"
      
      if job == "T":
            if int(grade) > 6:
                print("超出等级!")
            else:
                return "pass"
      
      if job == "M":
            if int(grade) > 3:
                print("超出等级!")
            else:
                return "pass"

class Program_funtion(Grade_checkMixin):
    def __init__(self) :
      self.uid = 10000
      self.member_data = {}
   
    def intrance(self):
      while True:
            op = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
            if op == "1":
                self.check_in()
            if op == "2":
                self.check_msg()
            if op == "3":
                self.promotion()
            if op == "4":
                self.degration()
            if op == "5":
                break

    def check_in(self):
      name = input("姓名:")
      job = input("职位(E.普通员工;T:组长;M:经理):")
      year = input("工龄:")
      grade = input("级别:")
      while self.grade_check(job, grade) != "pass":
            grade = input("请重新输入级别:")
      if job == "E":
            member = Employee(name, grade, year)
      elif job == "T":
            member = Teamleader(name, grade, year)
      elif job == "M":
            member = Manager(name, grade, year)
      self.member_data = member
      print(f"录入成功!姓名:{name},工号:{self.uid},薪资:{self.member_data.salary}")
      self.uid += 1
      
    def get_uid(self):
      while True:
            uid = int(input("请输入工号:"))
            if uid not in self.member_data:
                print("该工号不存在!")
            else:
                break
      return uid
   
    def get_name(self, uid):
      print(f"姓名:{self.member_data.name}")
   
    def get_job(self, uid):
      print(f"职位:{self.member_data.job}")
   
    def get_grade(self, uid):
      print(f"级别:{self.member_data.grade}")
   
    def get_year(self, uid):
      print(f"工龄:{self.member_data.year}")
   
    def get_salary(self, uid):
      print(f"薪资:{self.member_data.salary}")
   
    def check_msg(self):
      op_2 = input("1.员工查询;2.职位查询:")
      if op_2 == "1":
            uid = self.get_uid()
            self.get_name(uid)
            self.get_job(uid)
            self.get_year(uid)
            self.get_salary(uid)
      if op_2 == "2":
            op_3 = input("职位(E.普通员工;T:组长;M:经理):")
            if op_3 == "E":
                count = 0
                for each in self.member_data:
                  if self.member_data.job == "E":
                        count += 1
                print(f"目前普通员工共有{count}人")
                for each in self.member_data:
                  if self.member_data.job == "E":
                        print(f"{each} - {self.member_data.name}")
            elif op_3 == "T":
                count = 0
                for each in self.member_data:
                  if self.member_data.job == "T":
                        count += 1
                print(f"目前普通员工共有{count}人")
                for each in self.member_data:
                  if self.member_data.job == "T":
                        print(f"{each} - {self.member_data.name}")
            if op_3 == "M":
                count = 0
                for each in self.member_data:
                  if self.member_data.job == "M":
                        count += 1
                print(f"目前普通员工共有{count}人")
                for each in self.member_data:
                  if self.member_data.job == "M":
                        print(f"{each} - {self.member_data.name}")
         
    def promotion(self):
      pro_uid = int(input("请输入工号:"))
      print(f"{self.member_data.name},工号:{pro_uid},当前职位:{self.member_data.job}{self.member_data.grade},当前薪资:{self.member_data.salary}")
      rank_up = input("请输入需要增加的级数:")
      if self.member_data.job == "E":
            if int(self.member_data.grade) + int(rank_up) > 10:
                self.member_data.job = "T"
                self.member_data.grade = "1"
                old_salary = int(self.member_data.salary)
                self.member_data.salary = 4000 + 800 * int(self.member_data.grade) + 100 * int(self.member_data.year)
                print("升级成功!")
                print(f"{self.member_data.name},工号:{pro_uid},升级后职位:{self.member_data.job}{self.member_data.grade},升级后薪资:{self.member_data.salary}(+{self.member_data.salary - old_salary})")
            else:
                self.member_data.grade = int(self.member_data.grade) + int(rank_up)
                old_salary = int(self.member_data.salary)
                self.member_data.salary = 3000 + 500 * int(self.member_data.grade) + 50 * int(self.member_data.year)
                print("升级成功!")
                print(f"{self.member_data.name},工号:{pro_uid},升级后职位:{self.member_data.job}{self.member_data.grade},升级后薪资:{self.member_data.salary}(+{self.member_data.salary - old_salary})")
      
      elif self.member_data.job == "T":
            if int(self.member_data.grade) + int(rank_up) > 6:
                self.member_data.job = "M"
                self.member_data.grade = "1"
                old_salary = int(self.member_data.salary)
                self.member_data.salary = 5000 + 1000 * (int(self.member_data.grade) + int(self.member_data.year))
                print("升级成功!")
                print(f"{self.member_data.name},工号:{pro_uid},升级后职位:{self.member_data.job}{self.member_data.grade},升级后薪资:{self.member_data.salary}(+{self.member_data.salary - old_salary})")
            else:
                self.member_data.grade = int(self.member_data.grade) + int(rank_up)
                old_salary = int(self.member_data.salary)
                self.member_data.salary = 4000 + 800 * int(self.member_data.grade) + 100 * int(self.member_data.year)
                print("升级成功!")
                print(f"{self.member_data.name},工号:{pro_uid},升级后职位:{self.member_data.job}{self.member_data.grade},升级后薪资:{self.member_data.salary}(+{self.member_data.salary - old_salary})")
      
      elif self.member_data.job == "M":
            if int(self.member_data.grade) + int(rank_up) > 3:
                print("没得再升啦,再升你来当老板!")
            else:
                self.member_data.grade = int(self.member_data.grade) + int(rank_up)
                old_salary = int(self.member_data.salary)
                self.member_data.salary = 5000 + 1000 * (int(self.member_data.grade) + int(self.member_data.year))
                print("升级成功!")
                print(f"{self.member_data.name},工号:{pro_uid},升级后职位:{self.member_data.job}{self.member_data.grade},升级后薪资:{self.member_data.salary}(+{self.member_data.salary - old_salary})")

    def degration(self):
      deg_uid = int(input("请输入工号:"))
      print(f"{self.member_data.name},工号:{deg_uid},当前职位:{self.member_data.job}{self.member_data.grade},当前薪资:{self.member_data.salary}")
      rank_down = input("请输入需要降级的级数:")
      if self.member_data.job == "E":
            if int(self.member_data.grade) - int(rank_down) <= 0:
                print("没得再降啦,再降只能炒掉啦!")
            else:
                self.member_data.grade = int(self.member_data.grade) - int(rank_down)
                old_salary = int(self.member_data.salary)
                self.member_data.salary = 3000 + 500 * int(self.member_data.grade) + 50 * int(self.member_data.year)
                print("降级成功!")
                print(f"{self.member_data.name},工号:{deg_uid},降级后职位:{self.member_data.job}{self.member_data.grade},降级后薪资:{self.member_data.salary}(-{old_salary - self.member_data.salary})")
      
      elif self.member_data.job == "T":
            if int(self.member_data.grade) - int(rank_down) <= 0:
                self.member_data.job = "E"
                self.member_data.grade = "10"
                old_salary = int(self.member_data.salary)
                self.member_data.salary = 3000 + 500 * 10 + 50 * int(self.member_data.year)
                print("降级成功!")
                print(f"{self.member_data.name},工号:{deg_uid},降级后职位:{self.member_data.job}{self.member_data.grade},降级后薪资:{self.member_data.salary}(-{old_salary - self.member_data.salary})")
            else:
                self.member_data.grade = int(self.member_data.grade) - int(rank_down)
                old_salary = int(self.member_data.salary)
                self.member_data.salary = 4000 + 800 * int(self.member_data.grade) + 100 * int(self.member_data.year)
                print("降级成功!")
                print(f"{self.member_data.name},工号:{deg_uid},降级后职位:{self.member_data.job}{self.member_data.grade},降级后薪资:{self.member_data.salary}(-{old_salary - self.member_data.salary})")
      
      elif self.member_data.job == "M":
            if int(self.member_data.grade) - int(rank_down) < 0:
                self.member_data.job = "T"
                self.member_data.grade = "6"
                old_salary = int(self.member_data.salary)
                self.member_data.salary = 4000 + 800 * 6 + 100 * int(self.member_data.year)
                print("降级成功!")
                print(f"{self.member_data.name},工号:{deg_uid},降级后职位:{self.member_data.job}{self.member_data.grade},降级后薪资:{self.member_data.salary}(-{old_salary - self.member_data.salary})")
            else:
                self.member_data.grade = int(self.member_data.grade) - int(rank_down)
                old_salary = int(self.member_data.salary)
                self.member_data.salary = 5000 + 1000 * (int(self.member_data.grade) + int(self.member_data.year))
                print("降级成功!")
                print(f"{self.member_data.name},工号:{deg_uid},降级后职位:{self.member_data.job}{self.member_data.grade},降级后薪资:{self.member_data.salary}(-{old_salary - self.member_data.salary})")

def main():
    p = Program_funtion()
    p.intrance()

main()√
页: 19 20 21 22 23 24 25 26 27 28 [29] 30 31 32 33 34 35 36 37 38
查看完整版本: 第063讲:类和对象(VI)| 课后测试题及答案