鱼C论坛

 找回密码
 立即注册
查看: 54720|回复: 863

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

  [复制链接]
发表于 2022-6-6 01:10:36 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 10 鱼币 才能浏览
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 昨天 18:44 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 昨天 10:06 | 显示全部楼层
0、
同一运算符、函数、对象,在不同场景中实现的不同功能

1、


2、
可以的

3、
如果它走起路来像鸭子,叫起来也像鸭子,那么它就可以被当做鸭子

4、
低耦合

5、
是的


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

使用道具 举报

发表于 4 天前 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2026-9-11 16:41:36 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:
通过类继承,重写方法
第 1 题的答案是:

第 2 题的答案是:
是的
第 3 题的答案是:
当我们看见一只鸟,走起路来像鸭子,游起泳来像鸭子,叫起来也像鸭子,那么这只鸟就可以把它成为鸭子
第 4 题的答案是:
增强内聚
第 5 题的答案是:
不是
-------- 动动手 --------
class Employee:
    job = 'E'
    maxgrade = 10
    prejob = -1
    nextjob = 'T'
    jobname = '普通员工'
    def __init__(self,uid,name,year,grade):
        self.uid = uid
        self.name = name
        self.year = year
        self.grade = grade
    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):
    job = 'T'
    maxgrade = 6
    prejob = 'E'
    nextjob = 'M'
    jobname = '组长'
    def salary(self):
        return 4000 + 800*self.grade + 100*self.year
class Manager(Employee):
    job = 'M'
    maxgrade = 3
    prejob = 'T'
    nextjob = -1
    jobname = '组长'
    def salary(self):
        return 5000 + 1000*(self.grade + self.year)
class ManageSystem:
    job_map = {'E':Employee,'T':Teamleader,'M':Manager}
    def __init__(self):
        self.employee = {}
        self.uid = 10000
        self.employee[10000] = Manager(10000,'小甲鱼',12,3)
        self.employee[10001] = Teamleader(10001,'不二如是',10,6)
        self.employee[10002] = Employee(10002,'小甲鱼',5,5)
    def welcome(self):
        ins = 0
        while ins != '5':
            ins = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
            if ins == '1':
                self.add_employee()
            if ins == '2':
                self.query_employee()
            if ins == '3':
                self.upgrade_employee()
            if ins == '4':
                self.downgrade_employee()
    def add_employee(self):
        name = input("姓名:")
        job = input("职位(E.普通员工;T.组长;M.经理):")
        year = int(input("工龄:"))
        grade = int(input("级别:"))
        while grade > self.job_map.get(job).maxgrade or grade < 1:
            grade = int(input(f"该之外最高级别为{self.job_map.get(job).maxgrade},请重新录入级别:"))
        classname = self.job_map.get(job)
        employee = classname(self.uid,name,year,grade)
        self.employee[self.uid] = employee
        print(f"录入成功!姓名:{name},工号:{self.uid},薪资:{employee.salary()}")
        self.uid += 1
    def query_employee(self):
        ins = input("1.员工查询;2.职位查询:")
        if ins == '1':
            uid = int(input("请输入工号:"))
            if uid in self.employee:
                print(f"姓名:{self.employee[uid].get_name()}")
                print(f"职位:{self.employee[uid].get_job()}")
                print(f"级别:{self.employee[uid].get_grade()}")
                print(f"工龄:{self.employee[uid].get_year()}")
                print(f"薪资:{self.employee[uid].salary()}")
            else:
                print("该工号不存在")
        elif ins == '2':
            job = input("职位(E.普通员工;T.组长;M.经理):")
            result = {key:value for key,value in self.employee.items() if value.get_job() == job}
            num = len(result)
            if num > 0:
                print(f"目前{self.job_map.get(job).jobname}共有{num}人")
                for key,value in result.items():
                    print(f"{key}-{value.get_name()}")
            else:
                print(f"目前公司没有{self.job_map.get(job).jobname}")
            
    def upgrade_employee(self):
        uid = int(input("请输入工号:"))
        if uid in self.employee:
            employee = self.employee[uid]
            name = employee.get_name()
            job = employee.get_job()+str(employee.get_grade())
            old_salary  = employee.salary()
            print(f"{name},工号:{uid},当前职位:{job},当前薪资:{old_salary}")
            up = int(input("请输入需要增加的级数:"))
            suc = True
            if employee.get_grade()+ up <= employee.maxgrade:
                employee.grade = employee.get_grade()+ up
            else:
                if employee.nextjob == -1:
                    suc = False
                  
                else:
                    employee = self.job_map.get(employee.nextjob)(uid,employee.get_name(),employee.get_year(),1)
                    self.employee[uid] = employee
            if suc:
                print("升级成功")
                print(f"{name},工号:{uid},当前职位:{employee.get_job()}{employee.get_grade()},当前薪资:{employee.salary()}(+{employee.salary()-old_salary})")
            else:
                 print(f"{employee.jobname}无法再升级")
        else:
            print("该工号不存在")
    def downgrade_employee(self):
        uid = int(input("请输入工号:"))
        if uid in self.employee:
            employee = self.employee[uid]
            name = employee.get_name()
            job = employee.get_job()+str(employee.get_grade())
            old_salary  = employee.salary()
            print(f"{name},工号:{uid},当前职位:{job},当前薪资:{old_salary}")
            up = int(input("请输入需要减少的级数:"))
            suc = True
            if employee.get_grade()- up >0:
                employee.grade = employee.get_grade()- up
            else:
                if employee.prejob == -1:
                    suc = False  
                else:
                    classname = self.job_map.get(employee.prejob)
                    employee = classname(uid,employee.get_name(),employee.get_year(),classname.maxgrade)
                    self.employee[uid] = employee
            if suc:
                print("降级成功")
                print(f"{name},工号:{uid},当前职位:{employee.get_job()}{employee.get_grade()},当前薪资:{employee.salary()}({employee.salary()-old_salary})")
            else:
                print(f"{employee.jobname}无法再降级")
  
        else:
            print("该工号不存在")
def main():
    m = ManageSystem()
    m.welcome()

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

使用道具 举报

发表于 2026-9-8 22:27:02 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:比如加号,比如len函数,比如类

第 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 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
    max_grade = 10

class Teamleader(Employee):
    # 与父类构造相同,只重写工资和最高级别即可
    def salary(self):
        return 4000 + 800 * self.grade + 100 * self.year
    max_grade = 6

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


class ManageSystem:
    def __init__(self):
        self.employees = {}       # {工号: Employee对象}
        self.next_uid = 10000     # 下一张待发放的工号

    job_map = {
        'E': "普通员工",
        'T': "组长",
        'M': "经理"
    }
    class_map = {
        'E': Employee,
        'T': Teamleader,
        'M': Manager,
    }

    def enter_system(self):
        while True:
            ins = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
            if ins == '1':
                self.add_employee()
            elif ins == '2':
                self.query_employee()
            elif ins == '3':
                self.upgrade_employee()
            elif ins == '4':
                self.downgrade_employee()
            elif ins == '5':
                break
            else:
                print("输入不合法,请重新输入")

    def add_employee(self):
        name = input("姓名:")
        job = input("职位(E.普通员工,T.组长,M.经理):")
        if job not in self.class_map:
            print("职位输入有误!")
            return
        year = int(input("工龄:"))
        grade = int(input("级别:"))
        cls = self.class_map[job]
        while grade < 1 or grade > cls.max_grade:
            grade = int(input(f"该职位最高级别为{cls.max_grade},请重新录入级别:"))
        employee = cls(name, job, grade, year, self.next_uid)
        self.employees[self.next_uid] = employee
        print(f"录入成功!姓名:{name},工号:{self.next_uid},薪资:{employee.salary()}")
        self.next_uid += 1

    def query_employee(self):
        ins = input("1.员工查询;2.职位查询:")
        if ins == '1':
            uid = int(input("请输入工号:"))
            if uid in self.employees:
                e = self.employees[uid]
                print(e.get_name())
                print(e.get_job())
                print(e.get_grade())
                print(e.get_year())
                print(e.salary())
            else:
                print("该工号不存在!")
        elif ins == '2':
            job = input("职位(E.普通员工;T.组长;M.经理):")
            if job not in self.job_map:
                print("职位输入有误!")
                return
            matched = [(uid, emp) for uid, emp in self.employees.items()
                       if emp.get_job() == job]
            if not matched:
                print(f"目前公司没有{self.job_map[job]}!")
            else:
                print(f"目前{self.job_map[job]}共有{len(matched)}人")
                for uid, emp in matched:
                    print(f"{uid} - {emp.get_name()}")

    def upgrade_employee(self):
        uid = int(input("请输入工号:"))
        if uid not in self.employees:
            print("该工号不存在!")
            return
        e = self.employees[uid]
        old_salary = e.salary()
        print(f"{e.get_name()},工号:{uid},当前职位:{e.get_job()}{e.get_grade()},当前薪资:{old_salary}")
        up = int(input("请输入需要增加的级数:"))
        new_grade = e.get_grade() + up
        if new_grade <= e.max_grade:
            e.grade = new_grade
        else:
            if e.get_job() == 'M':
                print("经理无法再升职!")
                return
            elif e.get_job() == 'T':
                self.employees[uid] = Manager(e.get_name(), 'M', 1, e.get_year(), uid)
            elif e.get_job() == 'E':
                self.employees[uid] = Teamleader(e.get_name(), 'T', 1, e.get_year(), uid)
        e = self.employees[uid]  # 升职换类后重新取对象
        new_salary = e.salary()
        print("升级成功!")
        print(f"{e.get_name()},工号:{uid},升级后职位:{e.get_job()}{e.get_grade()},升级后薪资:{new_salary}(+{new_salary - old_salary})")

    def downgrade_employee(self):
        uid = int(input("请输入工号:"))
        if uid not in self.employees:
            print("该工号不存在!")
            return
        e = self.employees[uid]
        old_salary = e.salary()
        print(f"{e.get_name()},工号:{uid},当前职位:{e.get_job()}{e.get_grade()},当前薪资:{old_salary}")
        down = int(input("请输入需要减少的级数:"))
        new_grade = e.get_grade() - down
        if new_grade >= 1:
            e.grade = new_grade
        else:
            if e.get_job() == 'E':
                print("普通员工无法再降职!")
                return
            elif e.get_job() == 'T':
                self.employees[uid] = Employee(e.get_name(), 'E', Employee.max_grade, e.get_year(), uid)
            elif e.get_job() == 'M':
                self.employees[uid] = Teamleader(e.get_name(), 'T', Teamleader.max_grade, e.get_year(), uid)
        e = self.employees[uid]  # 降职换类后重新取对象
        new_salary = e.salary()
        delta = new_salary - old_salary  # 自带正负号,避免写成 (-{负数}) 变成 --
        print("降级成功!")
        print(f"{e.get_name()},工号:{uid},降级后职位:{e.get_job()}{e.get_grade()},降级后薪资:{new_salary}({delta})")


def main():
    manage = ManageSystem()
    manage.enter_system()

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

使用道具 举报

发表于 2026-9-7 10:49:56 From FishC Mobile | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2026-9-5 20:28:42 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2026-9-5 20:27:31 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2026-8-31 15:34:53 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:
通过继承父类
第 1 题的答案是:
它不需要知道属性内部,可以直接调用函数方法
第 2 题的答案是:
不能,它得是函数或操作符
第 3 题的答案是:
不知,那个英国诗人?
第 4 题的答案是:
增强了内聚
第 5 题的答案是:
不属于,因为它执行的都是和的功能
-------- 动动手 --------

请将第 0 题的代码写在下方:
class Employer:
    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():
        return 3000 + 500 * self.garde + 50 * year

class Teamleader:
    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():
        return 4000 + 800 * grade + 100 * year

class Manager:
    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():
        return 5000 + 1000 * (garde + year)
class functino:
    def __init__:
        n = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
        if n = 1, job = E:
            name = input("姓名:")
            job = input("职位(E.普通员工;T.组长;M.经理):")
            year = input("工龄:")
            grade = input("级别:")
        print(f"录入成功!姓名:{name}, 工号:10000,薪资:{3000 + 500 * self.garde + 50 * year}")

        if n = 1, job = T:
            name = input("姓名:")
            job = input("职位(E.普通员工;T.组长;M.经理):")
            year input("工龄:")
            garde = input("级别:")
        print(f"录入成功!姓名:{name}, 工号:, 薪资:{4000 + 800 * grade + 100 * year}")
        if n = 1, job = M:
            name = input("姓名:")
            job = input("职位(E.普通员工:T.组长;M.经理):")
            year = input("工龄:")
            grade = input("级别:")

        print(f"录入成功!姓名:{name}, 工号:, 薪资:{5000 + 1000 * (garde + year)})
            
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2026-8-27 09:01:30 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:
python多态:鸭子类型,继承重写
第 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
回复 支持 反对

使用道具 举报

发表于 2026-8-26 17:31:48 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2026-8-25 16:31:53 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2026-8-24 11:33:08 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2026-8-18 20:41:38 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2026-8-18 19:17:33 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

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

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

第 0 题的答案是:有多态函数

第 1 题的答案是:不管传入参数类型,只管是否有其方法

第 2 题的答案是:可以

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:不属于

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

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

使用道具 举报

发表于 2026-8-17 10:53:02 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2026-8-10 16:00:44 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2026-8-7 16:51:52 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:子类继承父类  重写父类同名方法 通过实例对象调用方法

第 1 题的答案是:没有多态要判断对象的类型 然后分支处理

第 2 题的答案是:可以 同一个加号 不同对象执行不同逻辑

第 3 题的答案是:如果它走起来像鸭子,游起来像鸭子,叫起来像鸭子,那它大概就是一只鸭子

第 4 题的答案是:

第 5 题的答案是:不是  参数不同而已

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-19 07:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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