鱼C论坛

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

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

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

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2024-10-30 10:15:28 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 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[uid] = [name,job,grade,year,Salary]
     def output(self,uid):
         if uid in y:
             print("姓名:{x[uid][0]}\n职位:{x[uid][1]}\n级别:{x[uid][2]}\n工龄:{x[uid][3]}\n薪资:{x[uid][4]}")
         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()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-10-22 20:47:36 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 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[_uid-10000]
                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[_uid-10000]
                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,')')   
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

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

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

第 2 题的答案是:可以

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

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

第 5 题的答案是:不属于

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

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

使用道具 举报

发表于 2024-10-21 16:57:43 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2024-10-17 18:30:14 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

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

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

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

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

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

使用道具 举报

发表于 2024-10-14 22:16:56 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:


第 1 题的答案是:

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

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

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

使用道具 举报

发表于 2024-10-14 20:53:45 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 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()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-10-10 09:55:19 | 显示全部楼层
1请回复您的答案^_^

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

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

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

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

使用道具 举报

发表于 2024-9-25 10:00:02 | 显示全部楼层
请回复您的答案^_^
我图一时之快
-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

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

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2024-9-15 14:10:00 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:来自同一类的不同实例对象拥有不同的属性和方法

第 1 题的答案是:同一方法在不同场景中有不同的效果

第 2 题的答案是:可以 ‘+’号在不同类型之前效果不同

第 3 题的答案是:如果它看起来像鸭子,游泳像鸭子,叫声像鸭子,那么它很可能就是一只鸭子

第 4 题的答案是:鸭子类型主要通过减少模块间的依赖关系来降低耦合度,同时通过鼓励单一职责原则间接促进了内聚性的提高。

第 5 题的答案是:no

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

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

使用道具 举报

发表于 2024-9-12 22:59:23 | 显示全部楼层
请回复您的答案^_^

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

第 0 题的答案是:
不同的场景有不同的作用
第 1 题的答案是:
一个函数可以实现多个功能,减少代码量
第 2 题的答案是:
这叫运算符的多态。
第 3 题的答案是:
不知道
第 4 题的答案是:
降低了耦合
第 5 题的答案是:
不是
-------- 动动手 --------

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

使用道具 举报

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

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-19 12:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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