jxxxxxxxxx 发表于 2025-8-19 23:29:50

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

jiaminy 发表于 2025-8-18 17:48:30

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

亲王 发表于 2025-8-18 16:49:17

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

hmaifmy 发表于 2025-8-17 22:00:32

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

djy2077 发表于 2025-8-17 16:18:39

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

schweinh 发表于 2025-8-16 14:49:11

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

15323552537 发表于 2025-8-14 21:13:51

请回复您的答案^_^

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

第 0 题的答案是:
通过继承与1调整不同的参数可以使实例化对象拥有不同的功能
第 1 题的答案是:
能让函数灵活发挥不同的效果
第 2 题的答案是:
可以
第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:
不属于
-------- 动动手 --------

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

忆念° 发表于 2025-8-13 23:33:56

1请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

红薯 发表于 2025-8-13 23:27:09

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

LJX_520 发表于 2025-8-13 14:58:26

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

命运既定 发表于 2025-8-12 16:33:07

请回复您的答案^_^

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

第 0 题的答案是:不同类的对象对同一方法可以有不同的响应

第 1 题的答案是:大大提高程序的可复用性,可以提高可扩充性和可维护性

第 2 题的答案是:不行

第 3 题的答案是:If it walks like a duck and quacks like a duck, then it must be a duck.

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

第 5 题的答案是:属于

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

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

partitial 发表于 2025-8-12 13:35:03

请回复您的答案^_^

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

第 0 题的答案是:不关心变量的类型

第 1 题的答案是:使用的范围广

第 2 题的答案是:可以

第 3 题的答案是:

第 4 题的答案是:低耦合

第 5 题的答案是:不属于

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

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

墨渊清莲 发表于 2025-8-10 21:32:11

请回复您的答案^_^

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

第 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 Employee:
    MAX_GRADE = 10
    JOB_CODE = "E"

    def __init__(self, name, grade, year, uid):
      self.name = name
      self.grade = grade
      self.year = year
      self.uid = uid
      self.job = "普通员工"

    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):
      return 3000 + 500 * self.grade + 50 * self.year

    def promote(self, levels):
      new_grade = self.grade + levels
      if new_grade > self.MAX_GRADE:
            return Teamleader(self.name, 1, self.year, self.uid)
      self.grade = new_grade
      return self

    def demote(self, levels):
      new_grade = self.grade - levels
      # 不能降级到0级以下
      if new_grade < 1:
            return None
      self.grade = new_grade
      return self

class Teamleader(Employee):
    MAX_GRADE = 6
    JOB_CODE = "T"

    def __init__(self, name, grade, year, uid):
      super().__init__(name, grade, year, uid)
      self.job = "组长"

    def salary(self):
      return 4000 + 800 * self.grade + 100 * self.year

    def promote(self, levels):
      new_grade = self.grade + levels
      if new_grade > self.MAX_GRADE:
            return Manager(self.name, 1, self.year, self.uid)
      self.grade = new_grade
      return self

    def demote(self, levels):
      new_grade = self.grade - levels
      if new_grade < 1:
            return Employee(self.name, Employee.MAX_GRADE, self.year, self.uid)
      self.grade = new_grade
      return self

class Manager(Employee):
    MAX_GRADE = 3
    JOB_CODE = "M"

    def __init__(self, name, grade, year, uid):
      super().__init__(name, grade, year, uid)
      self.job = "经理"

    def salary(self):
      return 5000 + 1000 * (self.grade + self.year)

    def promote(self, levels):
      new_grade = self.grade + levels
      # 已经是最高职位
      if new_grade > self.MAX_GRADE:
            return self
      self.grade = new_grade
      return self

    def demote(self, levels):
      new_grade = self.grade - levels
      if new_grade < 1:
            return Teamleader(self.name, Teamleader.MAX_GRADE, self.year, self.uid)
      self.grade = new_grade
      return self

class EmployeeSystem:
    def __init__(self):
      self.employees = {}
      self.next_uid = 10000

    def add_employee(self):
      name = input("姓名:")
      while True:
            job = input("职位(E.普通员工;T.组长;M.经理):").upper()
            if job in ['E', 'T', 'M']:
                break
            print("无效职位,请重新输入!")

      while True:
            try:
                year = int(input("工龄:"))
                break
            except:
                print("错误:请输入正常年龄数字")

      if job == 'E':
            max_grade = Employee.MAX_GRADE
      elif job == 'T':
            max_grade = Teamleader.MAX_GRADE
      else:
            max_grade = Manager.MAX_GRADE
      
      while True:
            try:
                grade = int(input("级别:"))
            except:
                print("错误:请输入正常级别数字")
                continue
            if 1 <= grade <= max_grade:
                break
            print(f"该职位最高级别为 {max_grade} ,请重新录入级别!")
      
      uid = self.next_uid
      self.next_uid += 1

      if job == 'E':
            employee = Employee(name, grade, year, uid)
      elif job == 'T':
            employee = Teamleader(name, grade, year, uid)
      else:
            employee = Manager(name, grade, year, uid)

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

    def query_employee(self):
      while True:
            try:
                uid = int(input("请输入工号:"))
                break
            except:
                print("错误:请输入正常工号数字")
      
      if uid in self.employees:
            e = self.employees
            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("该工号不存在!")

    def query_job(self):
      while True:
            job = input("职位(E.普通员工;T.组长;M.经理):").upper()
            if job in ['E', 'T', 'M']:
                break
            print("无效职位,请重新输入!")
      
      job_name = {'E': '普通员工', 'T': '组长', 'M': '经理'}
      employees =
      
      print(f"目前{job_name}共有{len(employees)}人:")
      for e in employees:
            print(f"{e.get_uid()} - {e.get_name()}")

    def promote_employee(self):
      while True:
            try:
                uid = int(input("请输入工号:"))
                break
            except:
                print("错误:请输入正常工号数字")
      
      if uid not in self.employees:
            print("该工号不存在!")
            return

      employee = self.employees
      print(f"{employee.get_name()},工号:{employee.get_uid()},当前职位:{employee.JOB_CODE}{employee.get_grade()},当前薪资:{employee.salary()}")

      while True:
            try:
                levels = int(input("请输入需要增加的级数:"))
                break
            except:
                print("错误:请输入正常等级数字")
                continue
      old_salary = employee.salary()
      new_employee = employee.promote(levels)

      if new_employee != employee:
            self.employees = new_employee
            print(f"升职成功!")
      else:
            print(f"升级成功!")

      print(f"{new_employee.get_name()},工号:{new_employee.get_uid()},升级后职位:{new_employee.JOB_CODE}{new_employee.get_grade()},升级后薪资:{new_employee.salary()}(+{new_employee.salary() - old_salary})")

    def demote_employee(self):
      while True:
            try:
                uid = int(input("请输入工号:"))
                break
            except:
                print("错误:请输入正常工号数字")

      if uid not in self.employees:
            print("该工号不存在!")
            return

      employee = self.employees
      print(f"{employee.get_name()},工号:{employee.get_uid()},当前职位:{employee.JOB_CODE}{employee.get_grade()},当前薪资:{employee.salary()}")

      while True:
            try:
                levels = int(input("请输入需要减少的级数:"))
                break
            except:
                print("错误:请输入正常等级数字")
                continue
      old_salary = employee.salary()
      new_employee = employee.demote(levels)

      if new_employee is None:
            print("不能降级到0级以下!")
            return

      if new_employee != employee:
            self.employees = new_employee
            print(f"降职成功!")
      else:
            print(f"降级成功!")

      print(f"{new_employee.get_name()},工号:{new_employee.get_uid()},降级后职位:{new_employee.JOB_CODE}{new_employee.get_grade()},降级后薪资:{new_employee.salary()}(-{old_salary - new_employee.salary()})")

    def run(self):
      while True:
            print("\n1.录入;2.查询;3.升级;4.降级;5.退出:", end="")
            choice = input().strip()
            
            if choice == '1':
                self.add_employee()
            elif choice == '2':
                print("1.员工查询;2.职位查询:", end="")
                sub_choice = input().strip()
                if sub_choice == '1':
                  self.query_employee()
                elif sub_choice == '2':
                  self.query_job()
                else:
                  print("无效选择!")
            elif choice == '3':
                self.promote_employee()
            elif choice == '4':
                self.demote_employee()
            elif choice == '5':
                print("感谢使用员工管理系统!")
                break
            else:
                print("无效选择,请重新输入!")

if __name__ == "__main__":
    system = EmployeeSystem()
    system.run()

jinpingyao 发表于 2025-8-7 23:35:08

请回复您的答案^_^

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

第 0 题的答案是:子类重写父类的方法

第 1 题的答案是:通过统一的接口处理不同类型的对象

第 2 题的答案是:是的

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:是

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

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

碳水脑袋 发表于 2025-8-5 19:51:28

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

DDDKT 发表于 2025-8-5 14:55:56

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

djdjsjek 发表于 2025-8-2 20:30:55

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

Edmound 发表于 2025-7-30 02:15:30

请回复您的答案^_^

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

第 0 题的答案是:对于不同情况作出不同行为

第 1 题的答案是:处理不同情况

第 2 题的答案是:可以

第 3 题的答案是:

第 4 题的答案是:弱内聚,低耦合

第 5 题的答案是:是的

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

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

吴永铎 发表于 2025-7-28 16:17:38

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

小明ys 发表于 2025-7-27 15:14:45

请回复您的答案^_^

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

第 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 Person:
    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 f"工号:{self.uid}"

    def get_name(self):
      return f"姓名:{self.name}"

    def get_job(self):
      return f"职位:{self.job}"

    def get_grade(self):
      return f"级别:{self.grade}"

    def get_year(self):
      return f"工龄:{self.year}"

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

class Main:
    data = []
    j = {"E":,"T":,"M":}
    def save(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 = 10000 + len(self.data)
      self.data.append(Person(name,job,grade,year,uid))
      _ = Person(name,job,grade,year,uid).salary()
      print(f"录入成功!姓名:{name},工号:{uid},薪资:{_}")

    def find(self):
      _ins = input("1.员工查询;2.职位查询:")
      if _ins == "1":
            a = int(input("请输入工号:"))
            for each in self.data:
                if each.uid == a:
                  print(each.get_name())
                  print(each.get_job())
                  print(each.get_grade())
                  print(each.get_year())
                  print(f"薪资:{each.salary()}")
                  break
            else:
                print("该工号不存在!")
      elif _ins == "2":
            count = 0
            x = []
            job = input("职位(E.普通员工;T.组长;M.经理):")
            for each in self.data:
                if each.job == job:
                  x.append(f"{each.uid}-{each.name}")
                  count += 1
            else:
                if count == 0:
                  print(f"目前公司没有{self.j}!")
                else:
                  print(f"目前{self.j}共有{count}人")
                  for each in x:
                        print(each)
                  
    def up(self):
      a = int(input("请输入工号:"))
      for each in self.data:
            if each.uid == a:
                x = each.salary()
                print(f"{each.name},{each.get_uid()},当前职位:{each.job + str(each.grade)},当前薪资:{x}")
                level = int(input("请输入需要增加的级数:"))
                if each.grade + level > self.j:
                  each.job = list(self.j.keys())
                  each.grade = 1
                else:
                  each.grade += level
                _ = each.job + str(each.grade)
                y = each.salary()
                print(f"升级成功!\n{each.name},{each.get_uid()},升级后职位:{_},升级后薪资:{y}(+{y-x})")
                break
      else:
            print("工号错误")
      
            
    def down(self):
      a = int(input("请输入工号:"))
      for each in self.data:
            if each.uid == a:
                x = each.salary()
                print(f"{each.name},{each.get_uid()},当前职位:{each.job + str(each.grade)},当前薪资:{x}")
                level = int(input("请输入需要减少的级数:"))
                if each.grade - level < 1:
                  each.job = list(self.j.keys())
                  each.grade = self.j
                else:
                  each.grade -= level
                _ = each.job + str(each.grade)
                y = each.salary()
                print(f"降级成功!\n{each.name},{each.get_uid()},降级后职位:{_},降级后薪资:{y}(-{x-y})")
                break
      else:
            print("工号错误")

main = Main()
while True:      
    ins = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
    if ins == "1":
      main.save()
    elif ins == "2":
      main.find()
    elif ins == "3":
      main.up()
    elif ins == "4":
      main.down()
    elif ins == "5":
      break
页: 1 2 3 4 5 6 7 8 [9] 10 11 12 13 14 15 16 17 18
查看完整版本: 第063讲:类和对象(VI)| 课后测试题及答案