zwjym 发表于 2024-11-16 22:16:04

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

sstthappy99 发表于 2024-11-15 17:12:21

done

SKY_DOR/cy 发表于 2024-11-10 18:01:52

0、不同的类只要函数格式相同即可输出不同效果
1、同一入口实现不同功能
2、可以
3、不知道
4、降低了耦合度
5、不算

邓缘 发表于 2024-11-9 20:03:18

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

youwosuoai 发表于 2024-11-7 11:56:49

{:5_90:}

Asura-2004 发表于 2024-11-5 20:44:07

class Staff:
    uid = 10000
    job_level = {"E": "普通员工", "T": "组长", "M": "经理"}
    job_max_grade = {"E": 10, "T": 6, "M": 3}
    jobs = {"E": [], "T": [], "M": []}

    def __init__(self, name, level, grade, year):
      self.name = name
      self.level = level
      self.grade = grade
      self.year = year
      self.uid = Staff.uid
      Staff.jobs.append(self.uid)
      Staff.uid += 1

    def get_uid(self):
      return self.uid

    def get_name(self):
      return self.name

    def get_level(self):
      return self.level

    def get_grade(self):
      return self.grade

    def get_year(self):
      return self.year

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


class Manage:

    def __init__(self):
      self.staffs = {}

    def menu(self):
      choice = 0
      while choice != 5:
            if choice == 1:
                self.new()
            elif choice == 2:
                self.select()
            elif choice == 3:
                self.update()
            elif choice == 4:
                self.degrade()
            choice = input("1.录入;2.查询;3.升级;4.降级;5.退出:")

    def new(self):
      name = input("姓名:")
      level = input("职位(E.普通员工;T.组长;M;经理):")
      while level not in Staff.job_max_grade.keys():
            print("输入错误,请重新输入:")
            level = input("职位(E.普通员工;T.组长;M;经理):")
      year = input("工龄:")
      grade = input("级别:")
      while grade > Staff.job_max_grade:
            grade = input(f"该级别最高为{Staff.job_max_grade},请重新输入级别:")
      staff = Staff(name, level, grade, year)
      self.staffs = staff
      print(f"录入成功!姓名是;{staff.name},工号;{staff.get_uid()},薪资;{staff.salary}")

    def check(self):
      n = input("1.员工查询;2.职位查询;")
      while n != 1 and n != 2:
            print("输错了,请重新输入:")
            n = input("1.员工查询;2.职位查询;")
      if n == 1:
            uid = int(input("输入工号:"))
            if uid not in Staff.jobs:
                print("该工号不存在!")
            else:
                staff = self.staffs
                print(f"姓名:{staff.name}\n职位:{staff.level}\n级别:{staff.grade}\n年龄:{staff.year}\n薪资:{staff.salary()}")
      elif n == 2:
            level = input("职位(E.普通员工;T.组长;M.经理):")
            if level not in Staff.job_level:
                print("该职位不存在!")
            else:
                print(f"目前普通员工共有{len()}人")



    def update(self):
      uid = input("请输入工号:")
      staff = self.staffs
      print(f"{staff.name},工号;{staff.get_uid()},当前职位:{staff.level + staff.grade},当前薪资;{staff.salary}")
      o_salary = staff.salary()
      add_grade = int(input("请输入需要增加的级数:"))
      new_grade = staff.grade + add_grade
      if new_grade > Staff.job_max_grade:
            staff.grade = 1
            staff.level = staff.level
      else:
            staff.grade = new_grade
      print("升级成功!")
      print(f"{staff.name},工号;{staff.get_uid()},升级后职位:{staff.level + staff.grade},升级后薪资;{staff.salary}(+{staff.salary-o_salary})")

    def degrade(self):
      pass

猪猪女孩_Lei 发表于 2024-11-1 17:03:42

请回复您的答案^_^

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

第 0 题的答案是:
重写和重用
第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

PythonTurtle 发表于 2024-10-31 22:37:34

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

大板牙o 发表于 2024-10-30 10:15:28

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

普通python人 发表于 2024-10-27 17:48:15

请回复您的答案^_^

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

第 0 题的答案是:len()函数根据操作数的不同,返回的结果性质也不同

第 1 题的答案是:简单

第 2 题的答案是:可以

第 3 题的答案是:如果有一只鸟,它走起路来像鸭子,飞起来像鸭子,叫起来也像鸭子,那这只鸟就能被称为鸭子


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

第 5 题的答案是:不是

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

请将第 0 题的代码写在下方:class Employee:
    x = {}
    y = []
    uid =10000
    T. = 10
    E. = 6
    M. = 3
    T.no. = 0
    E.no. = 0
    M.no. = 0
   
    def get_uid(self):
      return uid
    def get_name(self):
      return name
    def get_year(self):
      return year
    def get_job(self):
      return job
    def get_grade(self):
      return grade
    def salary(self):
      if get_job() == "E":
            Salary = 3000+500*get_grade()+50*get_year()
            E.no. += 1
      elif get_job() == "T":
            Salary = 4000+800*get_grade()+100*get_year()
            T.no. += 1
      else:
            Salary = 5000+1000*(get_grade()+get_year())
            M.no. += 1
   def __init__(self):
         uid += 1
         append(uid)
   def up(self,x):
         grade += x
         if get_job() = "E" and get_grade() > E.:
             job = "T"
             grade = 1
             E.no. -= 1
             T.no. += 1
         if get_job() = "T" and get_grade() > T.:
             job = "M"
             grade = 1
             T.no. -= 1
             M.no. += 1
   def down(self,x):
         grade -= x
         if get_job() = "M" and get_grade() < M.:
             job = "E"
             grade = E.
             M.no. -= 1
             T.no. += 1
         if get_job() = "E" and get_grade() < E.:
             job = "T"
             grade = T.
             T.no. -= 1
             E.no. += 1
   def input_(self):
         name = input("姓名:")
         job = input("职位(E.普通员工;T.组长;M.经理):")
         grade = input("级别:")
         year = input("工龄:")
         print("录入成功!姓名:{name},工号:{uid},薪资:{Salary}")
         x =
   def output(self,uid):
         if uid in y:
             print("姓名:{x}\n职位:{x}\n级别:{x}\n工龄:{x}\n薪资:{x}")
         else:
             print("工号不存在!")
   def job_output(self,y):
         if str(y) == "E":
            print("目前普通员工共有{E.no.}人")
         elif str(y) == "T":
            print("目前普通员工共有{T.no.}人")
      else:
            print("目前普通员工共有{M.no.}人")

def main():
    sc = Employee()
    z = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
    if z == 1:
      input_()
    elif z == 2:
      if input("1.员工查询;2.职位查询;") == 1:
            output(input("请输入工号:"))
      else:
            job_output(input("职位(E.普通员工;T.组长;M.经理):"))
    elif z == 3:
      up(input("请输入需要增加的级数"))
    elif z == 4:
      down(input("请输入需要减少的级数"))
    else:
      exit()

main()

wwwhbg888 发表于 2024-10-22 20:47:36

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

Hext 发表于 2024-10-22 18:09:54

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

请将第 0 题的代码写在下方:
class staff:
    def __init__(self,name:str,job:str,grade:int,year:int,uid:int):
      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 salaxy(self):
      if self.job == "E":
         return 3000+500*self.grade+50*self.year
      if self.job == "T":
            return 4000+800*self.grade+100*self.year
      if self.job == "M":
            return 5000+1000*(self.grade+self.year)
def gen_uid(start = 10000):
    uid = start
    while True:
      yield uid
      uid += 1
staff_lists = []
g_uid = gen_uid()
def main():
    while True:
      x = int(input("\n1.录入 2.查询 3.升级 4.降级 5.退出: "))
      if x == 5:
            break
      else:
            if x == 1:
                name = input("姓名:")
                job = input("职位(E.普通员工;T.组长;M.经理):")
                grade = int(input("级别:"))
                year = int(input("工龄:"))
                uid = next(g_uid)
                staff_lists.append(staff(name,job,grade,year,uid))
                salaxy = staff_lists[-1].salaxy()
                print(f"录入成功!姓名:{name},工号:{uid},薪资:{salaxy}")
               
            if x == 2:
                _ = int(input("1.员工查询 2.职位查询:"))
                if _ == 1:
                  count = 0
                  _uid = int(input("请输入工号:"))
                  for each in staff_lists:
                        if each.uid == _uid:
                            s = each.salaxy()
                            print(f"姓名:{each.name}\n职位:{each.job}\n级别:{each.grade}\n工龄:{each.year}\n薪资:{s}")
                            count += 1
                  if count == 0:
                        print("该工号不存在!")
                if _ == 2:
                  count = 0
                  _list = []
                  _job = input("职位(E.普通员工;T.组长;M.经理):")
                  for each in staff_lists:
                        if each.job == _job:
                            _list.append(each)
                            count += 1
                  if count == 0:
                        print("目前没有该职位的员工!")
                  else:
                        if _job == 'E':
                            print(f"目前普通员工共有{count}人")
                        if _job == 'T':
                            print(f"目前组长共有{count}人")
                        if _job == 'M':
                            print(f"目前经理共有{count}人")
                        for i in _list:
                            print(i.name," - ",i.uid)
            if x == 3:
                _uid = int(input("请输入工号:"))
                _ = staff_lists
                sal_pst = _.salaxy()
                print(f"{_.name},工号:{_.uid},当前职位:{_.job}{_.grade},当前薪资:{sal_pst}")
                i = int(input("请输入需要增加的级数:"))
                if _.job == 'E':
                  if _.grade+i >10:
                        _.job = "T"
                        _.grade = 1
                  else:
                        _.grade += i
                if _.job == 'T':
                  if _.grade+i >6:
                        _.job = "M"
                        _.grade = 1
                  else:
                        _.grade += i
                if _.job == 'M':
                  if _.grade == 3:
                        print("你满级了哥们~~~")
                  else:
                        if _.grade+i>3:
                            _.grade = 3
                        else:
                            _.grade += i
                print("升级成功!")
                sal_now = _.salaxy()
                print(f"{_.name},工号:{_.uid},当前职位:{_.job}{_.grade},当前薪资:{sal_now}",'(+',sal_now-sal_pst,')')   
            if x == 4:
                _uid = int(input("请输入工号:"))
                _ = staff_lists
                sal_pst = _.salaxy()
                print(f"{_.name},工号:{_.uid},当前职位:{_.job}{_.grade},当前薪资:{sal_pst}")
                i = int(input("请输入需要降低的级数:"))
                if _.job == 'E':
                  if _.grade-i <= 0:
                        _.grade = 1
                  else:
                        _.grade -= i
                if _.job == 'T':
                  if _.grade-i <= 0:
                        _.job = "E"
                        _.grade = 10
                  else:
                        _.grade -= i
                if _.job == 'M':
                  if _.grade-i <= 0:
                        _.job = "T"
                        _.grade = 6
                  else:
                        _.grade -= i
                print("降级成功!")
                sal_now = _.salaxy()
                print(f"{_.name},工号:{_.uid},当前职位:{_.job}{_.grade},当前薪资:{sal_now}",'(-',sal_pst-sal_now,')')   

彭ES 发表于 2024-10-21 17:00:16

请回复您的答案^_^

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

第 0 题的答案是:定义得不同类之间如果有继承关系,则一个对象就可以同时调用有继承关系得类中的所有方法

第 1 题的答案是:简化了代码

第 2 题的答案是:可以

第 3 题的答案是:如果一只鸟,长得像鸭子,叫声像鸭子,走路像鸭子,那就一定是鸭子

第 4 题的答案是:增强了内聚,但也增强了耦合

第 5 题的答案是:不属于

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

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

luonaergang 发表于 2024-10-21 16:57:43

1

c2606863940 发表于 2024-10-17 21:53:32

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

626562349 发表于 2024-10-17 18:30:14

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

Zhangmeiting814 发表于 2024-10-16 09:15:12

请回复您的答案^_^

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

第 0 题的答案是:
不同类型的对象可以通过相同的接口进行操作,即python允许不同类的对象以相同的方式被处理
第 1 题的答案是:
提高代码的灵活性
第 2 题的答案是:
不可以
第 3 题的答案是:

第 4 题的答案是:
增强内聚,降低耦合
第 5 题的答案是:
不是
-------- 动动手 --------

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

瑶瑶zoe 发表于 2024-10-14 22:16:56

请回复您的答案^_^

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

第 0 题的答案是:


第 1 题的答案是:

第 2 题的答案是:
可以
第 3 题的答案是:

第 4 题的答案是:
降低了耦合度
第 5 题的答案是:
...
-------- 动动手 --------

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

icecola123 发表于 2024-10-14 20:53:45

请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

小韩! 发表于 2024-10-10 12:47:25

请回复您的答案^_^

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

第 0 题的答案是:
根据传入的数据类型不同,实现不同的结果
第 1 题的答案是:
不同的场景下具有不同的作用效果
第 2 题的答案是:
可以
第 3 题的答案是:
如果它像鸭子,叫声像鸭子,那么它就是鸭子
第 4 题的答案是:
降低耦合度
第 5 题的答案是:
不属于
-------- 动动手 --------

请将第 0 题的代码写在下方:
class Employee:
    def __init__(self, name, job, grade, year):
      self.name = name
      self.job = job
      self.grade = grade
      self.year = year
      self.uid = Employee.next_uid()

    uid_counter = 10000

    @classmethod

    def next_uid(cls):
      uid = cls.uid_counter
      cls.uid_counter += 1
      return 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):
      return 0

class RegularEmployee(Employee):
    def __init__(self, name, grade, year):
      super().__init__(name, "普通员工", grade, year)

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

class TeamLeader(Employee):
    def __init__(self, name, grade, year):
      super().__init__(name, "组长", grade, year)
      
    def salary(self):
      return 4000 + 800 * self.grade + 100 * self.year

class Manager(Employee):
    def __init__(self, name, grade, year):
      super().__init__(name, "经理", grade, year)
      
    def salary(self):
      return 5000 + 1000 * (self.grade + self.year)

class EmployeeManagementSystem:
    def __init__(self):
      self.employees = []
      print("欢迎使用公司管理系统!")
      self.run()

    def add_employee(self):
      name = input("请输入员工姓名:")
      job_type = input("请输入职位(E.普通员工;T.组长;M.经理):")
      grade = int(input("请输入级别:"))
      year = int(input("请输入工龄:"))

      if job_type.upper() == 'E':
            new_employee = RegularEmployee(name, grade, year)
      elif job_type.upper() == 'T':
            new_employee = TeamLeader(name, grade, year)
      elif job_type.upper() == 'M':
            new_employee = Manager(name, grade, year)

      else:
            print("无效职务,员工未添加。")
            return

      self.employees.append(new_employee)
      print(f"员工{new_employee.get_name()} 添加成功,工号为{new_employee.get_uid()}。")

    def query_employee(self):
      uid = int(input("请输入要查询的工号:"))
      for emp in self.employees:
            if emp.get_uid() == uid:
                print(f"姓名:{emp.get_name()},职位:{emp.get_job()},级别:{emp.get_grade()}。")
                return
      print("未找到该工号的员工。")

    def promote_employee(self):
      uid = int(input("请输入要升职的员工工号:"))
      levels = {"E":10, "T":6, "M":3}

      for emp in self.employees:
            if emp.get_uid() == uid:
                if emp.get_job() == "普通员工" and emp.get_grade() < levels["E"]:
                  emp.garde += 1
                  print(f"员工{emp.get_name()} 升级为普通员工{emp.get_grade()}级。")

                elif emp.get_job() == "组长" and emp.get_grade() < levels["T"]:
                  emp.garde += 1
                  print(f"员工{emp.get_name()} 升级为组长{emp.get_grade()}级。")

                elif emp.get_job() == "经理" and emp.get_grade() < levels["M"]:
                  emp.garde += 1
                  print(f"员工{emp.get_name()} 升级为经理{emp.get_grade()}级。")

                if emp.get_job() == "普通员工" and emp.get_grade() > levels["E"]:
                  emp.__class__ = TeamLeader
                  emp.grade = 1
                  print(f"员工{emp.get_name()}升级为 组长 级别 1 级。")

                elif emp.get_job() == "组长" and emp.get_grade() > levels["T"]:
                  emp.__class__ = Manager
                  emp.grade = 1
                  print(f"员工{emp.get_name()}升级为 经理 级别 1 级。")
                return
            print("未找到该员工的工号。")

    def demote_employee(self):
      uid = int(input("请输入要降职的员工工号:"))
      levels = {"E":10, "T":6, "M":3}

      for emp in self.employees:
            if emp.get_uid() == uid:
                if emp.get_job() == "经理":
                  emp.__class__ = TeamLeader
                  emp.grade = levels["T"]
                  print(f"员工{emp.get_name()} 降职为 组长 级别 {emp.get_grade()}。")

            elif emp.get_job() == "组长":
                  emp.__class__ = RegularEmployee
                  emp.grade = levels["E"]
                  print(f"员工{emp.get_name()} 降职为 普通员工 级别 {emp.get_grade()}。")

            return
      print("未找到该员工的工号。")

    def run(self):
      while True:
            choice = input("1.添加员工;2.查询员工;3.升职员工;4.降职员工;5.退出:")
            if choice == "1":
                self.add_employee()
            elif choice == "2":
                self.query_employee()
            elif choice == "3":
                self.promote_employee()
            elif choice == "4":
                self.demote_employee()
            elif choice == "5":
                print("谢谢使用!")
                break
            else:
                print("无效选择,请重新输入。")

def main():
    m = EmployeeManagementSystem()
    m.run()
页: 7 8 9 10 11 12 13 14 15 16 [17] 18 19 20 21 22 23 24 25 26
查看完整版本: 第063讲:类和对象(VI)| 课后测试题及答案