Jking77 发表于 2025-7-7 17:02:14

请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:不同的对象可以实现对父类方法的重写

第 1 题的答案是:同一个接口可根据传入参数的不同,实现不同的功能

第 2 题的答案是:

第 3 题的答案是:东施效颦

第 4 题的答案是:增强了内聚

第 5 题的答案是:是

-------- 动动手 --------

请将第 0 题的代码写在下方:

lemonade111 发表于 2025-7-7 11:55:39

请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:

ofo_kuangbiao 发表于 2025-7-6 23:47:36

请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:

12岁 发表于 2025-7-3 20:22:46

请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:同一个方法或函数接受不同的对象会返回不同的结果

第 1 题的答案是:可以少定义函数或方法

第 2 题的答案是:不可以

第 3 题的答案是:

第 4 题的答案是:降低耦合

第 5 题的答案是:不属于

-------- 动动手 --------

请将第 0 题的代码写在下方:

无敌卷二 发表于 2025-6-30 10:39:16

请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:

凤求凰2025 发表于 2025-6-25 10:45:53

请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:

cytyz 发表于 2025-6-23 20:53:41

1

Tracy418 发表于 2025-6-23 17:31:16

请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:class shuxing:
    def __init__(self, uid, name, job, grade, year, money):
      self.uid = uid
      self.name = name      
      self.job = job
      self.grade = grade   
      self.year = year
      self.money = money
      
class Manage:
    def __init__(self):
      self.members = []
      self.card_number = 10000# 卡号从10000开始递增

    def create_member(self):
      name = input("请输入名字: ")
      job = input("职位(E.普通员工;T.组长;M:经理) ")
      year = int(input("工龄:"))
      grade = int(input("级别"))
      # 修正级别输入验证时的变量名错误
      if job == 'E':
            while grade > 10:
                grade = int(input("该职位最高级别位10,请重新录入级别:"))
      elif job == 'T':
            while grade > 6:
                grade = int(input("该职位最高级别位6,请重新录入级别:"))
      elif job == 'M':
            while grade > 3:
                grade = int(input("该职位最高级别位3,请重新录入级别:"))
      uid = self.card_number
      self.card_number += 1
      # 根据职位和级别、工龄计算薪资
      if job == 'E':
            money = 3000 + 500 * grade + 50 * year
      elif job == 'T':
            money = 4000 + 800 * grade + 100 * year
      elif job == 'M':
            money = 5000 + 1000 * grade + 1000 * year
      # 创建对象
      member = shuxing(uid, name, job, grade, year, money)
      self.members.append(member)
      print(f"录入成功!姓名 {name},工号{uid},薪资:{money}")
      
    def find_member(self, uid):
      for member in self.members:
            if member.uid == uid:
                return member
      return None
   
    def yuangongchaxun(self):
      uid = int(input("请输入工号: "))
      # 查找会员
      member = self.find_member(uid)
      if not member:
            print("该工号不存在!")
            return
      print(f"姓名:{member.name}")
      print(f"职位:{member.job}")
      print(f"级别:{member.grade}")
      print(f"工龄:{member.year}")
      print(f"薪资:{member.money}")

    def find_zhiwei(self, job):
      result_list = []
      for member in self.members:
            if member.job == job:
                result_list.append(member)
      return result_list if result_list else None

    def zhiweichaxun(self):
      job = input("职位(E.普通员工;T.组长;M.经理):")
      # 调用 find_zhiwei 方法根据职位查找
      members_list = self.find_zhiwei(job)
      if not members_list:
            print("该职位没人!")
            return
      print(f'目前{job}职位共有{len(members_list)}人:')
      for member in members_list:
            print(member.uid, member.name, sep="-")

    def upgrade(self):
      uid = int(input("请输入工号: "))
      member = self.find_member(uid)
      if not member:
            print("该工号不存在!")
            return
      print(f'{member.name},工号{member.uid},当前职位{member.job}{member.grade},当前薪资{member.money}')
      x = int(input("请输入需要增加的级数: "))
      level_list = ['E1','E2','E3','E4','E5','E6','E7','E8','E9','E10','T1','T2','T3','T4','T5','T6','M1','M2','M3']
      current_level = f"{member.job}{member.grade}"
      # 处理升级后的职位级别
      index = level_list.index(current_level)
      new_level = level_list
      member.job = new_level
      member.grade = int(new_level)
      if member.job == 'E':
            new_money = 3000 + 500 * member.grade + 50 * member.year
      elif member.job == 'T':
            new_money = 4000 + 800 * member.grade + 100 * member.year
      elif member.job == 'M':
            new_money = 5000 + 1000 * member.grade + 1000 * member.year
      money_diff = new_money - member.money
      member.money = new_money
      print(f"{member.name},工号:{member.uid},升职后的职位{member.job}{member.grade},升职后薪资{member.money}(+{money_diff})")

    def downgrade(self):
      uid = int(input("请输入工号: "))
      member = self.find_member(uid)
      if not member:
            print("该工号不存在!")
            return
      print(f'{member.name},工号{member.uid},当前职位{member.job}{member.grade},当前薪资{member.money}')
      x = int(input("请输入需要减少的级数: "))
      level_list = ['E1','E2','E3','E4','E5','E6','E7','E8','E9','E10','T1','T2','T3','T4','T5','T6','M1','M2','M3']
      current_level = f"{member.job}{member.grade}"
      index = level_list.index(current_level)
      new_level = level_list
      member.job = new_level
      member.grade = int(new_level)
      if member.job == 'E':
            new_money = 3000 + 500 * member.grade + 50 * member.year
      elif member.job == 'T':
            new_money = 4000 + 800 * member.grade + 100 * member.year
      elif member.job == 'M':
            new_money = 5000 + 1000 * member.grade + 1000 * member.year
      money_diff = member.money - new_money
      member.money = new_money
      print(f"{member.name},工号:{member.uid},降级后的职位{member.job}{member.grade},降级后薪资{member.money}(-{money_diff})")
      

# 主程序入口
def main():
    manager = Manage()
    while True:
      choice = input("\n1.录入;2.查询;3.升级;4.降级;5.退出:")
      if choice == '1':
            manager.create_member()
      elif choice == '2':
            sub_choice = input('1.员工查询;2.职位查询:')
            if sub_choice == '1':
                manager.yuangongchaxun()
            elif sub_choice == '2':
                manager.zhiweichaxun()
      elif choice == '3':
            manager.upgrade()
      elif choice == '4':
            manager.downgrade()
      elif choice == '5':
            print("退出程序")
            break
      else:
            print("无效操作,请重新选择!")

if __name__ == "__main__":
    main()

artificialI 发表于 2025-6-23 17:25:01

请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:

ufopro 发表于 2025-6-20 16:55:28

请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:

Gyoushinn 发表于 2025-6-20 10:31:14

本帖最后由 Gyoushinn 于 2025-6-20 10:55 编辑

请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:
同一个函数,作用在不同类型的对象上,结果不同
第 1 题的答案是:
只需要新增类,无需修改原代码
第 2 题的答案是:
可以
第 3 题的答案是:
如果它走路像鸭子,叫声像鸭子,那么它就是鸭子
第 4 题的答案是:
降低了耦合
第 5 题的答案是:
属于
-------- 动动手 --------

请将第 0 题的代码写在下方:
def get_uid():
    global uid
    uid += 1
    return uid

def get_name():
    name = input('姓名:')
    while True:
      if name:
            return name
      else:
            name = input("姓名不能为空,请重新输入姓名:")

def get_job():
    job = input('职位(【E.普通员工】【T.组长】【M.经理】:')
    while True:
      if job == 'E' or job == 'T' or job == 'M':
            return job
      else:
            job = input("职位不存在,请重新输入:")

def get_year():
    year = input("工龄:")
    while True:
      if year.isdecimal() and int(year) < 60:
            return int(year)
      else:
            year = input("请输入正确工龄:")

def judge_job(job):
    if job == 'E':
      return "普通员工"
    elif job == 'T':
      return "组长"
    elif job == 'M':
      return "经理"
   
def get_grade(job):
    grade = input("级别:")
    while True:
      if judge_job(job) == '普通员工' and 0 <= int(grade) <= 10:
            return int(grade)
      elif judge_job(job) == '组长' and 0 <= int(grade) <= 6:
            return int(grade)
      elif judge_job(job) == '经理' and 0 <= int(grade) <= 3:
            return int(grade)
      else:
            grade = input("级别不正确,请输入正确级别:")

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

class A():
    def __init__(self):
      self.uid = get_uid()
      self.name = get_name()
      self.job = get_job()
      self.year = get_year()
      self.grade = get_grade(self.job)
      self.salary = salary(self.job, self.grade, self.year)
      d =
      print(f'录入成功!姓名{self.name},工号{self.uid},薪资{self.salary}')


def get1():
    user_get_uid = int(input("请输入工号:"))
    if judge(user_get_uid):
      print(f"姓名:{d}")
      print(f"职位:{d}")
      print(f"级别:{d}")
      print(f"工龄:{d}")
      print(f"薪资:{d}")
                     
def judge(uid):
    if uid in d.keys():
      return True
    else:
      print("该工号不存在!")

def get2():
    input_job = get_job()
    job = judge_job(input_job)
    result = ]
    if result:
      print(f'目前{job}共有 {len(result)} 人:')
      for i in result:
            print(f'{i} - {i}')
    else:
      print(f"目前该公司没有{job}!")

def levelup():
    user_get_uid = int(input("请输入工号:"))
    if judge(user_get_uid):
      old_salary = d
      print(f'{d},工号:{d},当前职位:{judge_job(d)}{d},当前薪资:{old_salary}')
      level = int(input("请输入要增加的级数:"))
      judge_grade_up(user_get_uid,level)
      new_salary = salary(d, d, d)
      print(f'升级成功!')
      print(f'{d},',end="")
      print(f'工号:{d},',end="")
      print(f'升级后职位:{judge_job(d)}{d},',end="")
      print(f'升级后薪资{new_salary}(+{new_salary-d})')
      d = new_salary
      
      
      
def judge_grade_up(user_get_uid,level):
    grade = d
    job = d
    if job == "E":
      if grade + level >= 10:
            d = 'T'
            d = grade + level - 10
      else:
            d = grade + level

    if job == "T":
      if grade + level >= 6:
            d = 'M'
            d = grade + level - 6
      else:
            d = grade + level

    if job == "M":
      d = grade + level

def leveldown():
    user_get_uid = int(input("请输入工号:"))
    if judge(user_get_uid):
      print(f'{d},工号:{d},当前职位:{judge_job(d)}{d},当前薪资:{old_salary}')
      level = int(input("请输入要减少的级数:"))
      old_salary = d
      judge_grade_down(user_get_uid,level)
      new_salary = salary(d, d, d)
      print(f'降级成功!')
      print(f'{d},',end="")
      print(f'工号:{d},',end="")
      print(f'降级后职位:{judge_job(d)}{d},',end="")
      print(f'降级后薪资{new_salary}(-{old_salary-new_salary})')
      
      
def judge_grade_down(user_get_uid,level):
    grade = d
    job = d
    if job == "E":
      if grade - level < 0:
            d = 0

    if job == "T":
      if grade - level < 0:
            d = 'E'
            d = grade - level + 10
      else:
            d = grade - level

    if job == "M":
      if grade - level < 0:
            d = 'T'
            d = grade - level + 6   
      else:
            d = grade - level

def main():
    while True:
      user_input = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
      if user_input == '1':
            employee= A()
      if user_input == '2':
            while True:
                user_input2 = input("1.员工查询;2.职位查询:")
                if user_input2 == "1":
                  get1()
                  break
                elif user_input2 == '2':
                  get2()
                  break
                else:
                  user_input2 = input("请输入1或2进行查询:")
      if user_input == '3':
            levelup()
      if user_input == '4':
            leveldown()
      if user_input == '5':
            break
d = {}
uid = 10000
main()

Towns11 发表于 2025-6-18 17:09:16

请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:

xixioo110 发表于 2025-6-16 23:30:18

请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:对不同的对象使用不同的方法

第 1 题的答案是:不用重复定义方法

第 2 题的答案是:可以

第 3 题的答案是:不知道

第 4 题的答案是:不知道什么是鸭子类型

第 5 题的答案是:不属于

-------- 动动手 --------

请将第 0 题的代码写在下方:

蒜泥魚片 发表于 2025-6-15 22:35:38

请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:指同一个运算符、函数或对象在不同的场景下,具有不同的作用效果,这么一个技能

第 1 题的答案是:動態的"見機行事"

第 2 题的答案是:可以,同一個咚惴鶕搬嵛牟煌l揮出不同作用,這就是多態

第 3 题的答案是:不知道==

第 4 题的答案是:降低耦合度吧,因為鴨子類型使得一個函數能被重用許多次,不必跟類型綁在一起

第 5 题的答案是:不是吧,因為他只是參數有預設值?

-------- 动动手 --------

请将第 0 题的代码写在下方:

晚意不迟 发表于 2025-6-13 18:15:43

请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:

李毅凡 发表于 2025-6-12 18:54:40

请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:

Tshirt 发表于 2025-6-7 22:00:42

请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:

hlqln 发表于 2025-6-7 14:10:25

请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:

play_john 发表于 2025-6-6 15:25:46

请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:1

阿归 发表于 2025-6-6 14:17:05

本帖最后由 阿归 于 2025-6-6 14:21 编辑

请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:传入不同对象,输出结果不同?

第 1 题的答案是:灵活性,扩展性?

第 2 题的答案是:可以

第 3 题的答案是:??

第 4 题的答案是:降低耦合度

第 5 题的答案是:不属于❌

-------- 动动手 --------

请将第 0 题的代码写在下方:
class EmpInfo:
    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':
            s = 3000+500*self.grade+50*self.year
      elif self.job == 'T':
            s = 4000+800*self.grade+100*self.year
      elif self.job == 'M':
            s = 5000+1000*(self.grade+self.year)
      return s


class ProFunc:
    emps={}
    uid = 10000
    job_dict = dict(E='普通员工',T='组长',M='经理')
    grade_dict = dict(E=10,T=6,M=3)
    level = 'ETM'
    #录入功能
    def creat_emp(self):
      name = input('姓名:')
      job = input('职位(E.普通员工;T.组长;M.经理):')
      year = int(input('工龄:'))
      grade = int(input('级别:'))
      self.emps = EmpInfo(name,job,grade,year,self.uid)
      print(f'录入成功!姓名:{name},工号:{self.uid},薪资:{self.emps.salary()}')
      self.uid += 1

    #查询功能
    def search_info(self):
      op_s = input('1.员工查询;2.职位查询:')
      if op_s == '1':
            uid = int(input('请输入工号:'))
            if uid in self.emps:
                e = self.emps
                print('姓名:{}\n职位:{}\n级别:{}\n工龄:{}\n薪资{}'.\
                      format(e.get_name(),e.get_job(),e.get_grade(),
                           e.get_year(),e.salary()))
            else:
                print('该工号不存在!')
      else:
            _job = input('职位(E.普通员工;T.组长;M.经理):')
            ls = ''
            for i in self.emps.values():
                if i.job == _job:
                  ls += f'{i.uid}-{i.name} '
            print(f'目前{self.job_dict}共有{len(ls)}人:\n{ls}')

    #员工升级
    def grade_up(self):
      uid = int(input('请输入工号:'))
      if uid in self.emps:
            e = self.emps
            print(f'{e.name},工号:{e.uid},当前职位:{e.job}{e.grade},当前薪资:{e.salary()}')
            n = int(input('请输入需要增加的级数:'))
            if e.grade+n > self.grade_dict:
               
                if self.level.find(e.job) == 2:
                  self.emps.grade = self.grade_dict
                  self.emps.job = e.job
                  print('已经是最高级别')
                else:
                  self.emps.grade = 1
                  self.emps.job = self.level['ETM'.find(e.job)+1]
            else:
                self.emps.grade = e.grade+n
            print(f'{e.name},工号:{e.uid},升级后职位:{e.job}{e.grade},升级后薪资:{e.salary()}')
            
      else:
            print('该工号不存在!')

    #员工降级
    def grade_down(self):
      uid = int(input('请输入工号:'))
      if uid in self.emps:
            e = self.emps
            print(f'{e.name},工号:{e.uid},当前职位:{e.job}{e.grade},当前薪资:{e.salary()}')
            n = int(input('请输入需要减少的级数:'))
            if e.grade-n <= 0:
               
                if self.level.find(e.job) == 0:
                  self.emps.grade = 1
                  print('已经是最低级别')
                else:
                  self.emps.job = self.level['ETM'.find(e.job)-1]
                  self.emps.grade = self.grade_dict
            else:
                self.emps.grade = e.grade-n
            print(f'{e.name},工号:{e.uid},降级后职位:{e.job}{e.grade},降级后薪资:{e.salary()}')
            
      else:
            print('该工号不存在!')
            
    #主菜单功能
    def menu(self):
      op = input('1.录入;2.查询;3.升级;4.降级;5.退出:')
      while op != '5':
            if op == '1':
                self.creat_emp()
            elif op == '2':
                self.search_info()
            elif op == '3':
                self.grade_up()
            elif op == '4':
                self.grade_down()
               
            op = input('1.录入;2.查询;3.升级;4.降级;5.退出:')
      print('结束程序')

def main():
    e = ProFunc()
    e.menu()

main()
页: 1 2 3 4 5 6 7 8 9 10 [11] 12 13 14 15 16 17 18 19 20
查看完整版本: 第063讲:类和对象(VI)| 课后测试题及答案