鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[课后作业] 第063讲:类和对象(VI)| 课后测试题及答案

  [复制链接]
发表于 2025-3-4 09:10:12 | 显示全部楼层
零基础入门学习Python封面
《零基础入门学习Python》
(最新版)
小甲鱼 著
立即购买
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-2-28 09:37:26 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-2-24 22:49:15 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:python是一门动态的编程语言,当同一个函数,方法在不同形势下可能有不同作用

第 1 题的答案是:让一个函数,方法充分发挥他的作用

第 2 题的答案是:可以

第 3 题的答案是:

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

第 5 题的答案是:不是多态现象,2.3.4都是数字,没有换种类型

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

请将第 0 题的代码写在下方:
  1. class Manage:
  2.     def __init__(self,name,job,grade,year,pay):
  3.         self.name = name
  4.         self.job = job
  5.         self.grade = grade
  6.         self.year = year
  7.         self.pay = pay

  8. class Logger():
  9.     def get_uid(self):
  10.         member_number = {}

  11.     def get_name(self):
  12.         name = input("姓名:")

  13.     def get_job(self):
  14.         job = input("职位(E.普通员工;T.组长;M.经理):")

  15.     def get_year(self):
  16.         year = input("工龄:")

  17.     def get_grade(self):
  18.         grade = input("级别:")
  19.         if job == E:
  20.             while grade > 10:
  21.                 grade = input("该职位最高级别为10,请重新输入:")
  22.                
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-2-24 20:42:27 | 显示全部楼层
请回复您的答案^_^

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

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

第 1 题的答案是:提高了代码的灵活性和可扩展性

第 2 题的答案是:可以

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:不属于

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

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-2-24 15:22:22 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-2-21 15:14:17 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-2-20 16:07:40 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:继承和重写

第 1 题的答案是:在不同的对象中,属性和能力可以被改写

第 2 题的答案是:

第 3 题的答案是:我们不需要关心对象的具体类型,只需关注其行为方法是否符合即可

第 4 题的答案是:

第 5 题的答案是:是

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

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-2-18 10:51:58 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-2-17 18:25:00 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-2-17 16:16:03 | 显示全部楼层
请回复您的答案^_^

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

第 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 Company:
    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 Salary:
    def count(self,job,grade,year):
        if job == "E":
            salary = 3000 + 500*grade +50*year
        elif job == "T":
            salary = 4000 + 800*grade +100*year
        elif job == "M":
            salary = 5000 + 1000*(year+grade)
        return salary

class Manage(Company,Salary):
    def __init__(self):
        self.messages = {}
        self.employee = 0
        self.teamleader = 0
        self.manager = 0
        self.uid = 10000
        self.grade_ = {"E":10,"T":6,"M":3}
    def welcome(self):
        while True:
            _ = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
            if _ == "1":
                self.entering()
            if _ == "2":
                self.inquire()
            if _ == "3":
                self.upgrade()
            if _ == "4":
                self.downgrade()
            if _ == "5":
                break

    def grade_amend(self,job):
        grade = int(input("级别:"))
        while True:
            if grade > self.grade_[job]:
                grade = int(input(f"职位最高级别为{self.grade_[job]},请重新输入级别:"))
            else:
                break
        return grade
   
    def entering(self):
        name = input("姓名:")
        job = input("职位(E.普通员工;T.组长;M.经理):")
        year = int(input("工龄:"))
        grade = self.grade_amend(job)
        salary = self.count(job,grade,year)
        if job == "E":
            self.employee += 1
        elif job == "T":
            self.teamleader += 1
        elif job == "M":
            self.manager += 1
        company = Company(name,job,grade,year,self.uid,salary)
        self.messages[self.uid] = company
        print(f"录入成功!姓名:{name},工号:{self.uid},薪资:{salary}")
        self.uid += 1

    def inquire(self):
        ins = input("1.员工查询;2.职位查询:")
        if ins == "1":
            x = int(input("请输入工号:"))
            if self.messages.get(x) == None:
                print("该工号不存在!")
            else :
                print(f"姓名:{self.messages[x].name}")
                print(f"职位:{self.messages[x].job}")
                print(f"级别:{self.messages[x].grade}")
                print(f"工龄:{self.messages[x].year}")
                print(f"薪资:{self.messages[x].salary}")
        elif ins == "2":
            y = input("职位(E.普通员工;T.组长;M.经理):")
            if y == "E":
                if self.employee == 0 :
                    print("目前公司没有普通员工!")
                else:
                    print(f"目前普通员工共有{self.employee}人")
                    for each in self.messages.keys():
                        if self.messages[each].job == "E":
                            print(f"{each}-{self.messages[each].name}")
            elif y == "T":
                if self.teamleader == 0:
                    print("目前公司没有组长!")
                else:
                    print(f"目前组长共有{self.teamleader}人")
                    for each in self.messages.keys():
                        if self.messages[each].job == "T":
                            print(f"{each}-{self.messages[each].name}")
            elif y == "M":
                if self.manager == 0:
                    print("目前公司没有经理!")
                else:
                    print(f"目前经理共有{self.manager}人")
                    for each in self.messages.keys():
                        if self.messages[each].job == "M":
                            print(f"{each}-{self.messages[each].name}")
            

    def upgrade(self):
        x = int(input("请输入工号:"))
        if self.messages.get(x) == None:
            print("该工号不存在!")
        else :
            print(f"{self.messages[x].name},工号:{x},当前职位:{self.messages[x].job}{self.messages[x].grade},当前薪资:{self.messages[x].salary}")
            old_salary = self.messages[x].salary
            num = int(input("请输入需要增加的级数:"))
            if self.messages[x].job == "E":
                if self.messages[x].grade +num <= 10:
                    self.messages[x].grade += num
                else:
                    self.messages[x].grade =1
                    self.messages[x].job = "T"
                    self.employee -= 1
                    self.teamleader += 1
            elif self.messages[x].job == "T":
                if self.messages[x].grade +num <= 6:
                    self.messages[x].grade += num
                else:
                    self.messages[x].grade =1
                    self.messages[x].job = "M"
                    self.teamleader -= 1
                    self.manager += 1
            elif self.messages[x].job == "M":
                if self.messages[x].grade +num <= 3:
                    self.messages[x].grade += num
                else:
                    self.messages[x].grade =3
               
            print("升级成功!")
            self.messages[x].salary = self.count(self.messages[x].job,self.messages[x].grade,self.messages[x].year)
            print(f"{self.messages[x].name},工号:{self.messages[x].uid},升级后职位:{self.messages[x].job}{self.messages[x].grade},升级后薪资:{self.messages[x].salary}(+{self.messages[x].salary-old_salary})")

    def downgrade(self):
        x = int(input("请输入工号:"))
        if self.messages.get(x) == None:
            print("该工号不存在!")
        else :
            print(f"{self.messages[x].name},工号:{x},当前职位:{self.messages[x].job}{self.messages[x].grade},当前薪资:{self.messages[x].salary}")
            old_salary = self.messages[x].salary
            num = int(input("请输入需要减少的级数:"))
            if self.messages[x].job == "E":
                if self.messages[x].grade - num <= 0:
                    self.messages[x].grade = 1
                else:
                    self.messages[x].grade = self.messages[x].grade - num
                    
            elif self.messages[x].job == "T":
                if self.messages[x].grade - num <= 0:
                    self.messages[x].grade = 10
                    self.messages[x].job = "E"
                    self.employee += 1
                    self.teamleader -= 1
                else:
                    self.messages[x].grade -= num

            elif self.messages[x].job == "M":
                if self.messages[x].grade - num <= 0:
                    self.messages[x].grade = 6
                    self.messages[x].job = "T"
                    self.teamleader += 1
                    self.manager -= 1
                else:
                    self.messages[x].grade -= num
               
            print("降级成功!")
            self.messages[x].salary = self.count(self.messages[x].job,self.messages[x].grade,self.messages[x].year)
            print(f"{self.messages[x].name},工号:{self.messages[x].uid},降级后职位:{self.messages[x].job}{self.messages[x].grade},降级后薪资:{self.messages[x].salary}(-{old_salary-self.messages[x].salary})")
            
def main():
    m = Manage()
    m.welcome()
            
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-2-16 13:32:55 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:
同一个接口传入不同参数时返回不同结果
第 1 题的答案是:

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

第 4 题的答案是:
降低耦合
第 5 题的答案是:
没有
-------- 动动手 --------

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


class User:
    def __init__(self, uid, name, job, grade, year):
        self.uid = uid
        self.name = name
        self.job = job
        self.grade = grade
        self.year = year

    def get_uid(self):
         print("工号:", self.uid)

    def get_name(self):
        print("姓名:",self.name)

    def get_job(self):
        print("职位:",self.job)

    def get_grade(self):
        print("级别:", self.grade)

    def get_year(self):
        print("年限:",self.year)


    def salary(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))



class Employee:
    def grade(self):
        g = int(input("级别:"))
        while g > 10 or g < 1:
            print("该级别最低为1级,最高为10级,请重新录入:",end=" ")
            g = int(input())
        return g

class Teamleader:
    def grade(self):
        g = int(input("级别:"))
        while g > 6 or g < 1:
            print("该级别最低为1级,最高为6级,请重新录入:", end=" ")
            g = int(input())
        return g


class Manager:
    def grade(self):
        g = int(input("级别:"))
        while g > 3 or g < 1:
            print("该级别最低为1级,最高为3级,请重新录入:", end=" ")
            g = int(input())
        return g


class UpMixin:
    def up(self,job,leve):
        x = int(input("输入增加的级数:"))
        l = x + leve
        if job == "E":
            if l > 10:
                return "T", 1
            else:
                return "E", l
        if job == "T":
            if l > 6:
                return "M", 1
            else:
                return "T", l
        if job == "M":
            if l > 3:
                return "M", 3
            else:
                return "M", l





class Manger(UpMixin):

    def __init__(self):
        self.user_list = []
        self.uid = 10000
        self.E = Employee()
        self.T = Teamleader()
        self.M = Manager()


    def j(self, x):
        if x == "E":
            return self.E.grade()
        if x == "T":
            return self.T.grade()
        if x == "M":
            return self.M.grade()


    def new_user(self):
        """
        录入员工信息
        :return:
        """
        if len(self.user_list) == 0:
            uid = self.uid
            name = input("姓名:")
            job = input("职位:(E、普通员工  T、组长  M、经理):")
            grade = self.j(job)
            year = int(input("工龄:"))
        else:
            uid = self.user_list[-1].uid +1
            name = input("姓名:")
            job = input("职位:(E、普通员工  T、组长  M、经理):")
            grade = self.j(job)
            year = int(input("工龄:"))

        self.user_list.append(User(uid, name, job, grade, year))
        print(f"录入完成:姓名{name},工号:{uid},职位:{job},等级:{grade},工龄:{year},薪资{self.user_list[-1].salary()}")
        print(self.look())

    def look_user(self):
        print("1、员工查询  2、职位查询")
        x = input()
        if x == "1":
            number = int(input("输入工号"))
            found = False
            for i in self.user_list:
                if number == i.uid:
                    i.get_name()
                    i.get_job()
                    i.get_grade()
                    i.get_year()
                    print("薪资:", i.salary())
                    found = True
                    break
            if not found:
                print("员工不存在")
        if x == "2":
            j = input("职位:(E、普通员工  T、组长  M、经理):")
            j_list = []
            count = 0
            for i in self.user_list:
                if j == i.job:
                    count += 1
                    j_list.append((i.uid,i.name))
            print(f"共有{count}人")
            print(j_list)

    def user_up(self):
        number = int(input("输入工号"))
        found = False
        for i in self.user_list:
            if number == i.uid:
                i.get_name()
                i.get_job()
                i.get_grade()
                i.get_year()
                print("薪资:", i.salary())
                j,g = self.up(i.job, i.grade)
                i.grade = g
                i.job = j
                self.look()
                print("升级后:")
                i.get_name()
                i.get_job()
                i.get_grade()
                i.get_year()
                print("薪资:", i.salary())
                break
        else:
            print("用户不存在")


    def look(self):
        for i in self.user_list:
            print(i.__dict__)


manger = Manger()

while True:
    print("1、录入 2、查看 3、升级 4、降级 5、退出")
    x = input()
    if x == "1":
        manger.new_user()
    if x == "2":
        manger.look_user()

    if x == "3":
        manger.user_up()

    if x == "5":
        break




小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-2-11 17:23:34 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-2-11 13:53:56 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:Python通过方法重写和鸭子类型实现多态,允许不同类的对象对同一方法做出不同的响应,而不需要显式继承或类型检查。

第 1 题的答案是:多态的优势在于提高代码的灵活性和可扩展性,允许不同对象对同一方法做出不同响应,简化代码逻辑并支持更通用的设计。

第 2 题的答案是:可以

第 3 题的答案是:如果它走起来像鸭子,叫起来像鸭子,那么它就是鸭子

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

第 5 题的答案是:不是

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

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

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

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

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

class Manage:
    def __init__(self):
        self.uid=10000
        self.all_Employee={}
        self.E={}
        self.T={}
        self.M={}
    def func(self):
        a=0
        while a!='5':
            a=input("\n1.录入;2.查询;3.升级;4.降级;5.退出:")
            if a=="1":
                self.create()
            if a=='2':
                self.search()
            if a in ("3","4"):
                self.change_grade(a)
            if a=="5":
                break
    def create(self):
        name=input("姓名:")
        job=input("职位(E.普通员工;T.组长;M.经理):")
        year=int(input("工龄:"))
        grade=int(input("级别:"))
        if job=="E":
            while grade>10:
                grade=int(input("该职位最高级别为10,请重新录入级别:"))
            e=Employee(name,job,grade,year,self.uid)
            s=e.salary()
            self.E[self.uid]=e
        if job=="T":
            while grade>6:
                grade=int(input("该职位最高级别为6,请重新录入级别:"))
            e=Teamleader(name,job,grade,year,self.uid)
            s=e.salary()
            self.T[self.uid]=e
        if job=="M":
            while grade>3:
                grade=int(input("该职位最高级别为3,请重新录入级别:"))
            e=Manager(name,job,grade,year,self.uid)
            s=e.salary()
            self.M[self.uid]=e
        self.all_Employee[self.uid]=e
        print(f"录入成功!姓名:{name},工号:{self.uid},薪资:{s}")        
        self.uid+=1
    def search(self):
        b=input("1.员工查询;2.职位查询:")
   
        if b=='1':
            uid=int(input("请输入工号"))
            if uid not in self.all_Employee:
                print("该工号不存在!")
            else:
                x=self.all_Employee[uid]
                print(f"姓名:{x.name}\n职位:{x.job}\n级别:{x.grade}\n工龄:{x.year}\n薪资:{x.salary()}")
        if b=='2':
            c=input("职位(E.普通员工;T.组长;M.经理):")
            if c=="E":
                num=len(self.E)
                if num==0:
                    print("目前公司没有普通员工!")
                else:
                    print(f"目前普通员工有{num}人:")
                for i in self.E:
                    print(f"{i} - {self.E[i].name}")
            if c=="T":
                num=len(self.T)
                if num==0:
                    print("目前公司没有组长!")
                else:
                    print(f"目前普通员工有{num}人:")
                for i in self.T:
                    print(f"{i} - {self.T[i].name}")
            if c=="M":
                num=len(self.M)
                if num==0:
                    print("目前公司没有经理!")
                else:
                    print(f"目前普通员工有{num}人:")
                for i in self.M:
                    print(f"{i} - {self.M[i].name}")
    def change_grade(self,a):
        uid=int(input("请输入工号:"))
        if uid not in self.all_Employee:
            print("该工号不存在!")
        info=self.all_Employee[uid]
        print(f"{info.name},工号:{uid},当前职位:{info.job}{info.grade},当前薪资{info.salary()}")
        rs=info.salary()
        if a=='4':
            dgrade=int(input("请输入需要减少的级数:"))
            if info.job=="E":
                if (info.grade-dgrade)<0:
                    ngrade=1
                    e=Employee(info.name,"E",ngrade,info.year,uid)
                    self.E[uid]=e
                else:
                    ngrade=(info.grade-dgrade)
                    e=Employee(info.name,"E",ngrade,info.year,uid)
                    self.E[uid]=e
            if info.job=="T":
                if (info.grade-dgrade)<0:
                    ngrade=10
                    e=Employee(info.name,"E",ngrade,info.year,uid)
                    self.E[uid]=e
                    del self.T[uid]
                else:
                    ngrade=(info.grade-dgrade)
                    e=Teamleader(info.name,"T",ngrade,info.year,uid)
                    self.T[uid]=e
            if info.job=="M":
                if (info.grade-dgrade)<0:
                    ngrade=6
                    e=Teamleader(info.name,"T",ngrade,info.year,uid)
                    self.T[uid]=e
                    del self.M[uid]
                else:
                    ngrade=(info.grade-dgrade)
                    e=Manager(info.name,"M",ngrade,info.year,uid)
                    self.M[uid]=e
            self.all_Employee[uid]=e
            s=e.salary()
            print("降级成功!")
            print(f"{e.name},工号:{uid},降级后的职位:{e.job}{str(e.grade)},降级后的薪资:{s}({s-rs})")
        if a=='3':
            igrade=int(input("请输入需要增加的级数:"))
            if info.job=="E":
                if info.grade+igrade>10:
                    ngrade=1
                    e=Teamleader(info.name,"T",ngrade,info.year,uid)
                    self.T[uid]=e
                    del self.E[uid]
                else:
                    ngrade=info.grade+igrade
                    e=Employee(info.name,info.job,ngrade,info.year,uid)
                    self.E[uid]=e
            if info.job=="T":
                if info.grade+igrade>6:
                    ngrade=1
                    e=Manager(info.name,"M",ngrade,info.year,uid)
                    self.M[uid]=e
                    del self.T[uid]
                else:
                    ngrade=info.grade+igrade
                    e=Teamleader(info.name,info.job,ngrade,info.year,uid)
                    self.T[uid]=e
            if info.job=="M":
                if info.grade+igrade>3:
                    ngrade=3
                    e=Manger(info.name,"M",ngrade,info.year,uid)
                    self.M[uid]=e
                else:
                    ngrade=info.grade+igrade
                    e=Manager(info.name,"M",ngrade,info.year,uid)
                    self.M[uid]=e
            self.all_Employee[uid]=e
            s=e.salary()
            print("升级成功!")
            print(f"{e.name},工号:{uid},升级后的职位:{e.job}{str(e.grade)},升级后的薪资:{s}(+{s-rs})")

def main():
    m=Manage()
    m.func()
                           
                        
               
                    
               
               
            
   
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-2-7 19:57:44 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:通过继承、方法重写和鸭子类型,实现了面向对象的多态特性

第 1 题的答案是:通过允许不同的对象对同一消息做出不同的响应,提供了代码的灵活性和可扩展性,同时也提高了代码的可重用性、可读性和可维护性。

第 2 题的答案是:不对

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

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

第 5 题的答案是:不是

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

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

  1. class Employee:
  2.     def __init__(self, name, job, grade, year, uid):
  3.         self.name = name
  4.         self.job = job
  5.         self.grade = grade
  6.         self.year = year
  7.         self.uid = uid
  8.         self.salarys = self.salary()

  9.     def get_uid(self):
  10.         return self.uid

  11.     def get_name(self):
  12.         print(f"姓名:{self.name}")

  13.     def get_job(self):
  14.         print(f"职位:{self.job}")

  15.     def get_grade(self):
  16.         print(f"级别:{self.grade}")

  17.     def get_year(self):
  18.         print(f"工龄:{self.year}")

  19.     def get_salary(self):
  20.         print(f"薪资:{self.salarys}")

  21.     def salary(self):
  22.         if self.job == 'E':
  23.             s = 3000 + 500 * self.grade + 50 * self.year
  24.         elif self.job == 'T':
  25.             s = 4000 + 800 * self.grade + 100 * self.year
  26.         elif self.job == 'M':
  27.             s = 5000 + 1000 * (self.grade + self.year)
  28.         return s

  29. class EmployeeManageSystem:
  30.     def __init__(self):
  31.         self.employee_list = []
  32.         self.grade_dict = {'E': 10, 'T': 6, 'M': 3}

  33.     def add_employee(self):
  34.         name = input("姓名:")
  35.         job = input("职位(E.普通员工;T.组长;M.经理):")
  36.         year = int(input("工龄:"))
  37.         grade = int(input("级别:"))

  38.         while grade > self.grade_dict[job]:
  39.             grade = int(input(f"该职位最高级别为{self.grade_dict[job]},请重新录入级别:"))
  40.         uid = 10000 + len(self.employee_list)
  41.         self.employee_list.append(Employee(name, job, grade, year, uid))
  42.         salary = self.employee_list[-1].salarys
  43.         print(f"录入成功!姓名:{name},工号:{uid},薪资:{salary}")

  44.     def inquire_employee(self):
  45.         method = input("1.员工查询;2.职位查询:")
  46.         if method == "1":
  47.             inquire_uid = int(input("请输入工号:"))
  48.             for employee in self.employee_list:
  49.                 if employee.uid == inquire_uid:
  50.                     employee.get_name()
  51.                     employee.get_job()
  52.                     employee.get_grade()
  53.                     employee.get_year()
  54.                     employee.get_salary()
  55.                     break
  56.             else:
  57.                 print("该工号不存在!")

  58.         elif method == "2":
  59.             job_map = {'E':"普通员工",'T':"组长",'M':"经理"}
  60.             inquire_job = input("职位(E.普通员工;T.组长;M.经理):")
  61.             emps = []
  62.             for employee in self.employee_list:
  63.                 if employee.job == inquire_job:
  64.                     emps.append(employee)
  65.             print(f"目前{job_map[inquire_job]}共有 {len(emps)} 人:")
  66.             if emps:
  67.                 for employee in emps:
  68.                     print(f"{employee.uid} - {employee.name}")
  69.             else:
  70.                 print(f"目前公司没有{job_map[inquire_job]}!")

  71.     def upgrades(self):
  72.         upgrade_uid = int(input("请输入工号:"))
  73.         for employee in self.employee_list:
  74.             if employee.uid == upgrade_uid:
  75.                 print(f"{employee.name},工号:{employee.uid},当前职位:{employee.job}{employee.grade},当前薪资:{employee.salarys}")
  76.                 salary = employee.salarys
  77.                 var_grade = int(input("请输入需要增加的级数:"))
  78.                 employee.grade += var_grade
  79.                 if employee.grade > self.grade_dict[employee.job]:
  80.                     employee.grade = 1
  81.                     if employee.job == 'E':
  82.                         employee.job = 'T'
  83.                     elif employee.job == 'T':
  84.                         employee.job = 'M'
  85.                 print("升级成功!")
  86.                 employee.salarys = employee.salary()
  87.                 print(f"{employee.name},工号:{employee.uid},升级后职位:{employee.job}{employee.grade},升级后薪资:{employee.salarys}({employee.salarys - salary:+})")
  88.                 break
  89.         else:
  90.             print("该工号不存在!")
  91.     def downgrades(self):
  92.         downgrade_uid = int(input("请输入工号:"))
  93.         for employee in self.employee_list:
  94.             if employee.uid == downgrade_uid:
  95.                 print(f"{employee.name},工号:{employee.uid},当前职位:{employee.job}{employee.grade},当前薪资:{employee.salarys}")
  96.                 salary = employee.salarys
  97.                 var_grade = int(input("请输入需要减少的级数:"))
  98.                 employee.grade -= var_grade
  99.                 if employee.grade < 0:
  100.                     if employee.job == 'M':
  101.                         employee.job = 'T'
  102.                     elif employee.job == 'T':
  103.                         employee.job = 'E'
  104.                     employee.grade = self.grade_dict[employee.job]
  105.                 print("降级成功!")
  106.                 employee.salarys = employee.salary()
  107.                 print(f"{employee.name},工号:{employee.uid},降级后职位:{employee.job}{employee.grade},降级后薪资:{employee.salarys}({employee.salarys - salary:+})")
  108.                 break
  109.         else:
  110.             print("该工号不存在!")

  111. def main():
  112.     emp_manage = EmployeeManageSystem()
  113.     while True:
  114.         menu = input("\n1.录入;2.查询;3.升级;4.降级;5.退出:")
  115.         if not menu:
  116.             continue
  117.         if menu == '5':
  118.             break

  119.         elif menu == '1':
  120.             emp_manage.add_employee()

  121.         elif menu =='2':
  122.             emp_manage.inquire_employee()

  123.         elif menu == '3':
  124.             emp_manage.upgrades()

  125.         elif menu =='4':
  126.             emp_manage.downgrades()

  127. main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-2-1 00:20:13 | 显示全部楼层
请回复您的答案^_^

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

第 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 Attribution:
    def __init__(self, uid, name, job, grade, year, salary):
        self.get_uid = uid
        self.get_name = name
        self.get_job = job
        self.get_grade = grade
        self.get_year = year
        self.salary = salary

class Manage:
    def __init__(self):
        self.employee = {}
        self.teamleader = {}
        self.manager = {}
        self.uid = 10000


    def salary(self, 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)

    def ingrade(self, job):
        grade = int(input("级别:"))
        if job == 'E':
            while grade < 1 or grade > 10:
                grade = int(input("该职位最高级别为10,请重新录入级别:"))
        elif job == 'T':
            while not grade >= 1 or not grade <= 6:
                grade = int(input("该职位最高级别为6,请重新录入级别:"))
        elif job == 'M':
            while not grade >= 1 or not grade <= 3:
                grade = int(input("该职位最高级别为6,请重新录入级别:"))
        return grade

    def worker(self):
        uid = self.uid
        name = input("姓名:")
        job = input("职位(E.普通员工;T.组长;M.经理):")
        year = int(input("工龄:"))
        grade = self.ingrade(job)
        salary = self.salary(job, grade, year)
        if job == 'E':
            self.employee[uid] = Attribution(uid, name, job, grade, year, salary)
            print(f"录入成功!姓名:{self.employee[uid].get_name}, 工号:{self.employee[uid].get_uid}, 薪资:{self.employee[uid].salary}")
        elif job == 'T':
            self.teamleader[uid] = Attribution(uid, name, job, grade, year, salary)
            print(f"录入成功!姓名:{self.teamleader[uid].get_name}, 工号:{self.teamleader[uid].get_uid}, 薪资:{self.teamleader[uid].salary}")
        elif job == 'M':
            self.manager[uid] = Attribution(uid, name, job, grade, year, salary)
            print(f"录入成功!姓名:{self.manager[uid].get_name}, 工号:{self.manager[uid].get_uid}, 薪资:{self.manager[uid].salary}")
        self.uid += 1

    def namefind(self):
        uid = int(input("请输入工号:"))
        if uid in self.employee:
            print(f"姓名:{self.employee[uid].get_name}\n职位:{self.employee[uid].get_job}\n级别:{self.employee[uid].get_grade}\n工龄:{self.employee[uid].get_year}\n薪资:{self.employee[uid].salary}")
        elif uid in self.teamleader:
            print(f"姓名:{self.teamleader[uid].get_name}\n职位:{self.teamleader[uid].get_job}\n级别:{self.teamleader[uid].get_grade}\n工龄:{self.teamleader[uid].get_year}\n薪资:{self.teamleader[uid].salary}")
        elif uid in self.manager:
            print(f"姓名:{self.manager[uid].get_name}\n职位:{self.manager[uid].get_job}\n级别:{self.manager[uid].get_grade}\n工龄:{self.manager[uid].get_year}\n薪资:{self.manager[uid].salary}")
        else:
            print("该工号不存在!")

    def jobfind(self):
        job = input("职位(E.普通员工;T.组长;M.经理):")
        if job == 'E':
            if len(self.employee) == 0:
                print("目前公司没有普通员工!")
            else:
                print(f"目前普通员工共有{len(self.employee)}人:")
                for i in self.employee:
                    print(self.employee[i].get_uid, '-', self.employee[i].get_name)
        elif job == 'T':
            if len(self.teamleader) == 0:
                print("目前公司没有组长!")
            else:
                print(f"目前组长共有{len(self.teamleader)}人:")
                for i in self.teamleader:
                    print(self.employee[i].get_uid, '-', self.employee[i].get_name)
        elif job == 'M':
            if len(self.manager) == 0:
                print("目前公司没有经理!")
            else:
                print(f"目前经理共有{len(self.manager)}人:")
                for i in self.manager:
                    print(self.employee[i].get_uid, '-', self.employee[i].get_name)

    def upgrade(self):
        uid = int(input("请输入工号:"))
        if uid in self.employee:
            print(f"{self.employee[uid].get_name},工号:{self.employee[uid].get_uid},当前职位:E{self.employee[uid].get_grade},当前薪资:{self.employee[uid].salary}")
            old_salary = self.employee[uid].salary
            result = self.grade_change(self.employee[uid].get_grade, self.employee[uid].get_job)
            self.employee[uid].get_grade = result[0]
            self.employee[uid].salary = self.salary(result[1], result[0], self.employee[uid].get_year)
            change = self.employee[uid].salary - old_salary
            if change > 0:
                tick = '+'
            else:
                tick = ''
            print("升级成功!")
            if result[1] == 'E':
                print(f"{self.employee[uid].get_name},工号:{self.employee[uid].get_uid},当前职位:E{self.employee[uid].get_grade},升级后薪资:{self.employee[uid].salary}({tick}{change})")
            elif result[1] == 'T':
                self.employee[uid].get_job = result[1]
                print(f"{self.employee[uid].get_name},工号:{self.employee[uid].get_uid},当前职位:T{self.employee[uid].get_grade},升级后薪资:{self.employee[uid].salary}({tick}{change})")
                self.teamleader[uid] = self.employee[uid]
                self.employee.pop(uid)
            elif result[1] == 'M':
                self.employee[uid].get_job = result[1]
                print(f"{self.employee[uid].get_name},工号:{self.employee[uid].get_uid},当前职位:M{self.employee[uid].get_grade},升级后薪资:{self.employee[uid].salary}({tick}{change})")
                self.manager[uid] = self.employee[uid]
                self.employee.pop(uid)
               
        elif uid in self.teamleader:
            print(f"{self.teamleader[uid].get_name},工号:{self.teamleader[uid].get_uid},当前职位:T{self.teamleader[uid].get_grade},当前薪资:{self.teamleader[uid].salary}")
            old_salary = self.teamleader[uid].salary
            result = self.grade_change(self.teamleader[uid].get_grade, self.teamleader[uid].get_job)
            self.teamleader[uid].get_grade = result[0]
            self.teamleader[uid].salary = self.salary(result[1], result[0], self.teamleader[uid].get_year)
            change = self.teamleader[uid].salary - old_salary
            if change > 0:
                tick = '+'
            else:
                tick = ''
            print("升级成功!")
            if result[1] == 'T':
                print(f"{self.teamleader[uid].get_name},工号:{self.teamleader[uid].get_uid},当前职位:T{self.teamleader[uid].get_grade},升级后薪资:{self.teamleader[uid].salary}({tick}{change})")
            elif result[1] == 'M':
                self.teamleader[uid].get_job = result[1]
                print(f"{self.teamleader[uid].get_name},工号:{self.teamleader[uid].get_uid},当前职位:M{self.teamleader[uid].get_grade},升级后薪资:{self.teamleader[uid].salary}({tick}{change})")
                self.manager[uid] = self.teamleader[uid]
                self.teamleader.pop(uid)
               
        elif uid in self.manager:
            print(f"{self.manager[uid].get_name},工号:{self.manager[uid].get_uid},当前职位:M{self.manager[uid].get_grade},当前薪资:{self.manager[uid].salary}")
            old_salary = self.manager[uid].salary
            result = self.grade_change(self.manager[uid].get_grade, self.manager[uid].get_job)
            self.manager[uid].get_grade = result[0]
            self.manager[uid].salary = self.salary(result[1], result[0], self.teamleader[uid].get_year)
            change = self.manager[uid].salary - old_salary
            if change > 0:
                tick = '+'
            else:
                tick = ''
            print("升级成功!")
            print(f"{self.manager[uid].get_name},工号:{self.manager[uid].get_uid},当前职位:M{self.manager[uid].get_grade},升级后薪资:{self.manager[uid].salary}({tick}{change})")         
        else:
            print("该工号不存在!")

    def grade_change(self, grade, job):
        result = []
        add = int(input("请输入需要增加的级数:"))
        num = grade + add
        if job == 'E':
            if num <= 10:
                result.append(num)
                result.append('E')
            elif 10 < num <= 16:
                result.append(num - 10)
                result.append('T')
            elif 16 < num <= 19:
                result.append(num - 16)
                result.append('M')
            else:
                print("超过最高级别,无效!")
                return [grade, job]
        elif job == 'T':
            if num <= 6:
                result.append(num)
                result.append('T')
            elif 6 < num <= 9:
                result.append(num - 6)
                result.append('M')
            else:
                print("超过最高级别,无效!")
                return [grade, job]
        elif job == 'M':
            if num <= 3:
                result.append(num)
                result.append('M')
            else:
                print("超过最高级别,无效!")
                return [grade, job]
        return result



def main():
    a = Manage()
    num = int(input("1.录入;2.查询;3.升级;4.降级;5.退出:"))
    while num != 5:
        if num == 1:
            a.worker()
        elif num == 2:
            choice = int(input("1.员工查询;2.职位查询:"))
            if choice == 1:
                a.namefind()
            elif choice == 2:
                a.jobfind()
        elif num == 3:
            a.upgrade()
        elif num == 4:
            pass
        else:
            print("指令错误,请重新输入:")
        num = int(input("1.录入;2.查询;3.升级;4.降级;5.退出:"))
            
   
main()

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-28 02:45:28 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-26 21:53:48 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-24 10:33:56 | 显示全部楼层
one functin/method/attribute/operator can deal with different situation.

increase cohesion, decrease coupling.

yes, it's polymorphism.

when a thin looks like duck, bark like a duck, and walk like a duck, then it is a duck.

decrease coupling, because it deal with defferent object with uniform style.

yes, it s.

yes, it is.
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-22 02:46:10 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:
同一个方法、运算符等因为被操作的对象不同而采取不同的处理方法、得到不一样的结果,叫做多态
第 1 题的答案是:
s使得代码更灵活
第 2 题的答案是:
可以
第 3 题的答案是:
不知道
第 4 题的答案是:
低耦合
第 5 题的答案是:

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

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

    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


class Teamleader(Employee):
    def __init__(self, empl):
        super().__init__(empl.uid, empl.name, 'T', empl.grade, empl.year)

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


class Manager(Employee):

    def __init__(self, empl):
        super().__init__(empl.uid, empl.name, 'M', empl.grade, empl.year)

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


class Main:

    def __init__(self):
        self.employees = []
        self.uid = 10000
        self.max_grage = {'E': 10, 'T': 6, 'M': 3}
        self.job_name = {'E': '普通员工', 'T': '组长', 'M': '经理'}

    def get_empl(self, uid):
        for e in self.employees:
            if uid == e.uid:
                return e
        else:
            return None

    def add(self):
        uid = self.uid
        name = input("姓名:")
        job = input("职位(E.普通员工;T.组长;M.经理):")
        year = int(input("工龄:"))
        grade = int(input("级别:"))
        while grade > self.max_grage[job]:
            grade = int(input(f"该级别最高为{self.max_grage[job]},请重新输入:"))

        empl = Employee(uid, name, job, grade, year)
        if job == 'T':
            empl = Teamleader(empl)
        elif job == 'M':
            empl = Manager(empl)

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

    def empl_query(self):
        empl = self.get_empl(int(input("请输入工号:")))
        if not empl:
            print("该工号不存在 ")
            return
        print(f"姓名:{empl.name}")
        print(f"职位:{empl.job}")
        print(f"级别:{empl.grade}")
        print(f"工龄:{empl.year}")
        print(f"薪资:{empl.salary()}")

    def job_query(self):
        jobs = []
        cnt = 0
        job = input("职位(E.普通员工;T.组长;M.经理):")
        for e in self.employees:
            if job == e.job:
                jobs.append(e)
                cnt += 1
        if cnt == 0:
            print(f"目前公司没有{self.job_name[job]}")
        else:
            print(f"目前{self.job_name[job]}共有{cnt}人")
            for e in jobs:
                print(f"{e.uid} - {e.name}")

    def query(self):
        op = input("1.员工查询;2.职位查询")
        if op == '1':
            self.empl_query()
        elif op == '2':
            self.job_query()

    def upgrade(self):
        empl = self.get_empl(int(input("请输入工号:")))
        if not empl:
            print("该工号不存在 ")
            return
        print(f"{empl.name},工号:{empl.uid},当前职位:{empl.job + str(empl.grade)},当前薪资:{empl.salary()}")
        num = int(input("请输入需要增加的级数:"))
        empl.grade += num
        if empl.grade > self.max_grage[empl.job]:
            self.employees.remove(empl)
            if empl.job == 'E':
                empl.grade = 1
                empl = Teamleader(empl)
            elif empl.job == 'T':
                empl.grade = 1
                empl = Manager(empl)
            elif empl.job == 'M':
                empl.grade = 3
                print("已经是最高级!")
            self.employees.append(empl)
        print(f"{empl.name},工号:{empl.uid},升级后职位:{empl.job + str(empl.grade)},升级后薪资:{empl.salary()}")

    def downgrade(self):
        empl = self.get_empl(int(input("请输入工号:")))
        if not empl:
            print("该工号不存在 ")
            return
        print(f"{empl.name},工号:{empl.uid},当前职位:{empl.job + str(empl.grade)},当前薪资:{empl.salary()}")
        num = int(input("请输入需要降低的级数:"))
        empl.grade -= num
        if empl.grade < 1:
            self.employees.remove(empl)
            if empl.job == 'E':
                empl.grade = 1
                print("已经是最低级!")
            elif empl.job == 'T':
                empl = Employee(empl.uid, empl.name, 'E', 10, empl.year)
            elif empl.job == 'M':
                empl.grade = 6
                empl = Teamleader(empl)
            self.employees.append(empl)
        print(f"{empl.name},工号:{empl.uid},升级后职位:{empl.job + str(empl.grade)},升级后薪资:{empl.salary()}")

    def welcome(self):
        while True:
            op = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
            if op == '1':
                self.add()
            elif op == '2':
                self.query()
            elif op == '3':
                self.upgrade()
            elif op == '4':
                self.downgrade()
            elif op == '5':
                break


def main():
    Main().welcome()


main()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-19 20:33:32 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-8-21 10:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表