鱼C论坛

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

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

  [复制链接]
发表于 2023-8-25 07:39:49 | 显示全部楼层
零基础入门学习Python封面
《零基础入门学习Python》
(最新版)
小甲鱼 著
立即购买
.
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-8-24 19:12:01 | 显示全部楼层
0.针对不同 对象有不同的操作。
2.可以
4.增强了内聚。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-23 17:06:01 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-8-21 16:01:11 | 显示全部楼层
本帖最后由 张三ccccccc 于 2023-8-22 12:42 编辑

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 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 set_grade(self,grade):
        self.grade = grade
    ##获取工龄
    def get_year(self):
        return self.year
    ##统计并返回工资
    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)


def main():
    result = {}
    jobs ={'E':[],'T':[],'M':[]}
    uid = 10000
    max_E_Grade = 10
    max_T_Grade = 6
    max_M_Grade = 3
    ##录入功能
    def log_in():
        name = input("姓名:")
        job =input("职位(E:普通员工;T:组长;M:经理):")
        year = int(input("工龄:"))
        grade = int(input("级别:"))
        nonlocal uid
        if job == 'E':
            while grade > max_E_Grade:
                grade = int(input(f"该职位的最高级别为{max_E_Grade},请重新录入级别(1~10):"))
            e = Employee(name,job,grade,year,uid)
            result[uid] = e
            jobs['E'].append(e)
        if job == 'T':
            while grade > max_T_Grade:
                grade = int(input(f"该职位的最高级别为{max_T_Grade},请重新录入级别(1~6):"))
            e = Teamleader(name,job,grade,year,uid)
            result[uid] = e
            jobs['T'].append(e)
        if job == 'M':
            while grade > max_M_Grade:
                grade = int(input(f"该职位的最高级别为{max_M_Grade},请重新录入级别(1~3):"))
            e = Manager(name,job,grade,year,uid)
            result[uid] = e
            jobs['M'].append(e)
        print(f"录入成功!姓名:{name},工号:{uid},工龄{year}")
        uid += 1
    ##查询功能
    def Search():

        ##员工查询
        def Employee_search():
            uid1 = int(input("请输入工号:"))
            if result.get(uid1):
                e = result[uid1]##实例化Employee Teamleader Manager 这三个对象中的一个
                print(f"姓名:{e.get_name()}\n 职位:{e.get_job()}\n 级别:{e.get_grade()}\n工龄:{e.get_year()} ")
                ##获取薪资
                print(f"薪资:{e.salary()}")
            else:
                print("该工号不存在!")
        ##职位查询
        def Grade_search():
            job = input("职位(E:普通员工;T:组长;M:经理):")
            if job =='E':
                if jobs['E']:
                    print(f"目前普通员工共有{len(jobs['E'])}人")
                    for each in jobs['E']:
                        print(f"{each.get_uid()}-{each.get_name()}")
                else:
                    print(f"目前公司没有普通员工!")
            if job =='T':
                if jobs['T']:
                    print(f"目前普通员工共有{len(jobs['T'])}人")
                    for each in jobs['T']:
                        print(f"{each.get_uid()}-{each.get_name()}")
                else:
                    print(f"目前公司没有组长!")
            if job =='M':
                if jobs['M']:
                    print(f"目前普通员工共有{len(jobs['M'])}人")
                    for each in jobs['M']:
                        print(f"{each.get_uid()}-{each.get_name()}")
                else:
                    print(f"目前公司没有经理!")

        search_number = input("1.员工查询;2.职位查询:")
        if search_number =="1":
            Employee_search()
        if search_number == "2":
            Grade_search()

    ##升级功能
    def UpGrade():
        uid1 = int(input("请输入工号:"))
        if result.get(uid1):
            e = result[uid1]
            print(f"姓名:{e.get_name()},工号:{e.get_uid()},当前职位:{e.get_job()}{e.get_grade()},当前薪资:{e.salary()}")
            name = e.get_name()
            job = e.get_job()
            year = e.get_year()
            grade = e.get_grade()
            old_salary = e.salary()
            uid = e.get_uid()
            
            upgrade_num =int(input("请输入需要增加的级数:"))
            if job == 'E':
                if grade + upgrade_num > max_E_Grade:
                    job = 'T'
                    grade = 1
                    jobs['E'].remove(e)
                    e = Teamleader(name,job,grade,year,uid)
                    jobs['T'].append(e)
                    result[uid] = e
                else:
                    e.set_grade(grade + upgrade_num)
            elif job == 'T':
                if grade + upgrade_num > max_T_Grade:
                    job = 'M'
                    grade = 1
                    jobs['T'].remove(e)
                    e = Manager(name,job,grade,year,uid)
                    jobs['M'].append(e)
                    result[uid] = e
                else:
                    e.set_grade(grade + upgrade_num)
            elif job == 'M':
                if grade + upgrade_num > max_M_Grade:
                    print("已达到最高级别!")
                    grade = max_M_Grade
                else:
                    e.set_grade(garde + upgrade_num)
            new_salary = e.salary()
            print("升级成功!")
            print(f"姓名:{e.get_name()},工号:{e.get_uid()},当前职位:{e.get_job()}{e.get_grade()},当前薪资:{e.salary()},+({new_salary-old_salary})")
        else:
            print("该工号不存在")
    ##降级
    def DownGrade():
        uid1 = int(input("请输入工号:"))
        if result.get(uid1):
            e = result[uid1]
            print(f"姓名:{e.get_name()},工号:{e.get_uid()},当前职位:{e.get_job()}{e.get_grade()},当前薪资:{e.salary()}")
            name = e.get_name()
            job = e.get_job()
            year = e.get_year()
            grade = e.get_grade()
            old_salary = e.salary()
            uid = e.get_uid()
            upgrade_num =int(input("请输入需要减少的级数:"))
            if job == 'E':
                if grade - upgrade_num <= 0:
                    print("已经是最低职位")
                    grade =1
                else:
                    e.set_grade(grade-upgrade_num)
            elif job == 'T':
                if grade - upgrade_num <= 0:
                    job = 'E'
                    grade = max_E_Grade
                    jobs['T'].remove(e)
                    e = Employee(name,job,grade,year,uid)
                    jobs['E'].append(e)
                    result[uid] = e
                else:
                    e.set_grade(grade - upgrade_num)
            elif job == 'M':
                if grade-upgrade_num <1:
                    job = 'T'
                    grade = max_T_Grade
                    jobs['M'].remove(e)
                    e = Teamleader(name,job,grade,year,uid)
                    jobs['T'].append(e)
                    result[uid] = e
                else:
                    e.set_grade(garde - upgrade_num)
            new_salary = e.salary()
            print("降级成功!")
            print(f"姓名:{e.get_name()},工号:{e.get_uid()},当前职位:{e.get_job()}{e.get_grade()},当前薪资:{e.salary()},({new_salary-old_salary)}")
        else:
            print("该工号不存在")

    ##主程序
    number = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
    while number != "5":
        if number == "1":
            log_in()
        if number == "2":
            Search()
        if number == "3":
            UpGrade()
        if number == "4":
            DownGrade()
        number = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
    else:
        print("欢迎使用本管理程序~")
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-20 15:29:09 | 显示全部楼层
对象间的继承关系可有可无
灵活性好
可以
高内聚
不是
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-18 17:15:55 | 显示全部楼层
0.
即使不知道一个变量是何种类型,但只要符合规则,仍能够使用变量调用方法
1.
使得代码可以快速替换使用,只需要更改变量及相关信息即可
2.
我觉得可以,他们本质上仍然是相加后进行布尔运算
3.
当我看到一只像鸭子一样走路、像鸭子一样游泳、像鸭子一样叫的鸟时,我称那只鸟为鸭子。
4.
降低耦合
5.
不属于,这种是同一类型(?不太确定)

0.

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

使用道具 举报

发表于 2023-8-16 15:50:22 | 显示全部楼层
多态在编程中是一个非常重要的概念,它是指同一个运算符、函数或对象在不同的场景下,具有不同的作用效果,这么一个技能。

“见机行事”

可以’

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.

低耦合



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

使用道具 举报

发表于 2023-8-16 12:48:52 | 显示全部楼层
0
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-8-14 09:31:46 | 显示全部楼层
11111
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-13 15:20:47 | 显示全部楼层
0、不知道
1、方便
2、可以
3、不知道
4、低偶合
5、不属于
6、
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-13 10:48:17 | 显示全部楼层
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.是
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-12 16:33:05 | 显示全部楼层
0
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-8-12 15:46:08 | 显示全部楼层
‘’
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-8-11 16:31:38 | 显示全部楼层
每日打卡
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-11 14:46:02 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-8-9 14:27:32 | 显示全部楼层
0.在不同场景有不同的作用
1.方便,可以对父类的函数的重写
2.可以,一个是数值的相加,一个是字符串的拼接
3.长得像就可以
4.降低了耦合
5.不是
动动手
0.
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-9 10:13:53 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-8-3 23:59:57 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-8-3 18:15:37 | 显示全部楼层
  1. # 第0题
  2.   # 就是传入的对象不同,则执行的功能效果也不同

  3. # 第1题
  4.   # 灵活。针对不同对象有不同的功能效果

  5. # 第2题
  6.   # 可以

  7. # 第3题
  8.   # 不知道

  9. # 第4题
  10.   # 降低了耦合度

  11. # 第5题
  12.   # 不属于
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-30 16:48:28 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-19 21:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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