鱼C论坛

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

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

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

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2024-11-15 17:12:21 | 显示全部楼层
done
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-11-10 18:01:52 | 显示全部楼层
0、不同的类只要函数格式相同即可输出不同效果
1、同一入口实现不同功能
2、可以
3、不知道
4、降低了耦合度
5、不算
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

发表于 2024-11-7 11:56:49 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-11-5 20:44:07 | 显示全部楼层
class Staff:
    uid = 10000
    job_level = {"E": "普通员工", "T": "组长", "M": "经理"}
    job_max_grade = {"E": 10, "T": 6, "M": 3}
    jobs = {"E": [], "T": [], "M": []}

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

    def get_uid(self):
        return self.uid

    def get_name(self):
        return self.name

    def get_level(self):
        return self.level

    def get_grade(self):
        return self.grade

    def get_year(self):
        return self.year

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


class Manage:

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

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

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

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



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

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

使用道具 举报

发表于 2024-11-1 17:03:42 | 显示全部楼层
请回复您的答案^_^

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

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

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

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

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

使用道具 举报

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

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

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

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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