鱼C论坛

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

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

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

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

第 0 题的答案是:python可以让我们在子类中覆盖在父类中不满意的方法,也叫重写(实现类继承的多态)

第 1 题的答案是:根据接受到不同的参数,给出不同的解决方案

第 2 题的答案是:可以

第 3 题的答案是:一只鸟走路姿势像鸭子,形态像鸭子,叫声像鸭子,那么他就是鸭子

第 4 题的答案是:我猜都不是

第 5 题的答案是:不是

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

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

使用道具 举报

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

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

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

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2025-3-12 16:19:02 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2025-3-12 15:19:34 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2025-3-12 06:23:09 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:
多样化
第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2025-3-11 20:43:28 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

请将第 0 题的代码写在下方:class Employee: #先设置总类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 get_uid(self): #在员工基类上先把各种def get函数设置好
        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):
        """工资计算方法(由子类实现)"""
        pass


class CommonEmployee(Employee): #再设置分类,各种员工类别
    """普通员工类"""
    def __init__(self, name, grade, year, uid):
        super().__init__(name, 'E', grade, year, uid)

    def salary(self): #工资这种分情况的在分类中设置
        return 3000 + 500 * self.grade + 50 * self.year


class Teamleader(Employee):
    """组长类"""
    def __init__(self, name, grade, year, uid):
        super().__init__(name, 'T', grade, year, uid)

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


class Manager(Employee):
    """经理类"""
    def __init__(self, name, grade, year, uid):
        super().__init__(name, 'M', grade, year, uid)

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


class EmployeeManage:
    """员工管理类"""
    def __init__(self):
        self.employees = {}  # 存储员工信息
        self.current_uid = 10000  # 起始工号

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

        # 职位对应的类和最高级别
        job_class = {'E': CommonEmployee, 'T': Teamleader, 'M': Manager}
        max_grade = {'E': 10, 'T': 6, 'M': 3}

        if grade > max_grade[job]:
            grade = int(input(f"该职位最高级别为{max_grade[job]},请重新录入级别:"))

        # 创建员工实例并存储
        employee = job_class[job](name, grade, year, self.current_uid)
        self.employees[self.current_uid] = employee
        print(f"录入成功!姓名:{name},工号:{self.current_uid},薪资:{employee.salary()}")
        self.current_uid += 1

    def search_employee(self):
        """查询员工信息"""
        choice = input("1.员工查询;2.职位查询:")
        if choice == '1':
            uid = int(input("请输入工号:"))
            employee = self.employees.get(uid)
            if employee:
                print(f"姓名:{employee.get_name()}")
                print(f"职位:{employee.get_job()}")
                print(f"级别:{employee.get_grade()}")
                print(f"工龄:{employee.get_year()}")
                print(f"薪资:{employee.salary()}")
            else:
                print("该工号不存在!")
        elif choice == '2':
            job = input("职位(E.普通员工;T.组长;M.经理):").strip()
            count = 0
            result = []
            for emp in self.employees.values():
                if emp.get_job() == job:
                    count += 1
                    result.append(f"{emp.get_uid()} - {emp.get_name()}")
            if count == 0:
                print(f"目前公司没有{job}!")
            else:
                print(f"目前{job}共有 {count} 人:")
                for r in result:
                    print(r)

    def promote_employee(self):
        """员工升级"""
        uid = int(input("请输入工号:"))
        employee = self.employees.get(uid)
        if not employee:
            print("工号不存在")
            return

        print(f"{employee.get_name()},工号:{employee.get_uid()},当前职位:{employee.get_job()}{employee.get_grade()},当前薪资:{employee.salary()}")
        add_grade = int(input("请输入需要增加的级数:"))

        job_grade = {'E': 10, 'T': 6, 'M': 3}
        current_max = job_grade[employee.get_job()]
        new_grade = employee.get_grade() + add_grade

        # 处理升职逻辑
        if new_grade > current_max:
            job_map = {'E': 'T', 'T': 'M'}
            if employee.get_job() in job_map:
                new_job = job_map[employee.get_job()]
                new_grade = 1
            else:  # 已是经理,不能再升
                new_grade = current_max
                new_job = employee.get_job()
        else:
            new_job = employee.get_job()

        # 更新员工信息
        new_emp = {'E': CommonEmployee, 'T': Teamleader, 'M': Manager}[new_job](
            employee.get_name(), new_grade, employee.get_year(), uid)
        self.employees[uid] = new_emp
        print(f"升级成功!{employee.get_name()},工号:{uid},升级后职位:{new_job}{new_grade},升级后薪资:{new_emp.salary()}(+{new_emp.salary() - employee.salary()})")

    def demote_employee(self):
        """员工降级"""
        uid = int(input("请输入工号:"))
        employee = self.employees.get(uid)
        if not employee:
            print("工号不存在")
            return

        print(f"{employee.get_name()},工号:{employee.get_uid()},当前职位:{employee.get_job()}{employee.get_grade()},当前薪资:{employee.salary()}")
        reduce_grade = int(input("请输入需要减少的级数:"))

        job_grade = {'E': 10, 'T': 6, 'M': 3}
        current_grade = employee.get_grade()
        new_grade = current_grade - reduce_grade
        current_job = employee.get_job()

        # 处理降职逻辑
        if new_grade < 1:
            job_map = {'T': 'E', 'M': 'T'}
            if current_job in job_map:
                new_job = job_map[current_job]
                new_grade = job_grade[new_job]
            else:  # 已是普通员工,不能再降
                new_grade = 1
                new_job = current_job
        else:
            new_job = current_job

        # 更新员工信息
        new_emp = {'E': CommonEmployee, 'T': Teamleader, 'M': Manager}[new_job](
            employee.get_name(), new_grade, employee.get_year(), uid)
        self.employees[uid] = new_emp
        print(f"降级成功!{employee.get_name()},工号:{uid},降级后职位:{new_job}{new_grade},降级后薪资:{new_emp.salary()}(+{new_emp.salary() - employee.salary()})")


def main():
    manage = EmployeeManage() #main函数调用程序管理总类
    while True:
        print("1.录入;2.查询;3.升级;4.降级;5.退出:", end="")
        choice = input().strip()
        if choice == '1':
            manage.add_employee()
        elif choice == '2':
            manage.search_employee()
        elif choice == '3':
            manage.promote_employee()
        elif choice == '4':
            manage.demote_employee()
        elif choice == '5':
            print("退出程序")
            break
        else:
            print("无效选择,请重新输入")


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

使用道具 举报

发表于 2025-3-10 14:52:28 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2025-3-7 01:55: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 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2025-3-5 15:48:34 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2025-3-5 09:16:10 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

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

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2025-3-4 09:10:12 | 显示全部楼层
请回复您的答案^_^

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

第 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
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-19 18:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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