鱼C论坛

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

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

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

使用道具 举报

发表于 2023-8-30 10:00:32 | 显示全部楼层
0. 继承其他类,但在不同场景下实现不同功能
1. 批量生产+自定义,提升类的创建效率
2. 可以
3. 如果像鸭子一样走路,像鸭子一样呱呱叫,那它就是一只鸭子
4. 降低耦合度
5. 不是
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-28 10:51:34 | 显示全部楼层
11
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-8-27 09:38:13 | 显示全部楼层
0.
类继承的多态:即可以通过继承的方法,在子类中更改父类的方法从而实现多态,也可以自定义函数的多态。

1.
可以使用同一个函数从而实现不同的效果

2.
可以,一个是算数运算,一个是字符串拼接

3.
如果我看到一只鸟,它长得像鸭子,走路游泳也像鸭子,那么我认为他就是鸭子

4.
增强了内聚

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

使用道具 举报

发表于 2023-8-26 19:11:40 | 显示全部楼层
btbt



no

no

di

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

使用道具 举报

发表于 2023-8-25 19:52:33 | 显示全部楼层
  1. class Personnel:
  2.     def __init__(self,name,job,grade,year,uid):
  3.         self.name = name
  4.         self.job = job
  5.         self.grade = int(grade)
  6.         self.year = int(year)
  7.         self.uid = uid
  8.         self.wage = 0
  9.         
  10.     def get_uid(self):
  11.         return self.uid

  12.     def get_name(self):
  13.         return self.name

  14.     def get_job(self):
  15.         return self.job

  16.     def get_grade(self):
  17.         return self.grade

  18.     def salary(self):
  19.         if self.job == 'E':
  20.             self.wage = 3000 + 500 * self.grade + 50 * self.year
  21.         elif self.job == 'T':
  22.             self.wage = 4000 + 800 * self.grade + 100 * self.year
  23.         elif self.job == 'M':
  24.             self.wage = 5000 + 1000 * (self.grade + self.year)
  25.         return self.wage

  26.     def adj_grade(self):
  27.         if self.job == 'E':
  28.             if self.grade > 10:
  29.                 self.job = 'T'
  30.                 self.grade = 1
  31.             elif self.grade < 1:
  32.                 sele.grade = 1
  33.         elif self.job == 'T':
  34.             if self.grade < 1:
  35.                 self.job = 'E'
  36.                 self.grade = 10
  37.             elif self.grade > 6:
  38.                 self.job = 'M'
  39.                 self.grade = 1
  40.         elif self.job == 'M':
  41.             if self.grade < 1:
  42.                 self.job = 'T'
  43.                 self.grade = 6
  44.             elif self.grade > 3:
  45.                 self.grade = 3
  46.                
  47. class Manage:
  48.     def __init__(self):
  49.         self.personnel = {}
  50.         self.E = []
  51.         self.T = []
  52.         self.M = []
  53.         self.uid = 10000

  54.     def use(self):
  55.         ins = input('1.录入;2.查询;3.升级;4.降级;5.退出:')
  56.         while ins != '5':
  57.             if ins == '1':
  58.                 self.add_people()
  59.             if ins == '2':
  60.                 self.check()
  61.             if ins == '3':
  62.                 self.upgrade()
  63.             if ins == '4':
  64.                 self.demote()
  65.             ins = input('\n1.录入;2.查询;3.升级;4.降级;5.退出:')


  66.     def add_people(self):
  67.         name = input('姓名:')
  68.         job = input('职位(E.普通员工;T.组长;M.经理):')
  69.         year = input('工龄:')
  70.         grade = input('级别:')
  71.         p = Personnel(name,job,grade,year,self.uid)
  72.         self.personnel[self.uid] = p
  73.         if job == 'E':
  74.             self.E.append((str(self.uid),name))
  75.         if job == 'T':
  76.             self.T.append((str(self.uid),name))
  77.         if job == 'M':
  78.             self.M.append((str(self.uid),name))
  79.         print(f'录入成功!姓名:{name},工号:{self.uid},薪资:{p.salary()}')
  80.         self.uid += 1

  81.     def check(self):
  82.         op = input('1.员工查询;2.职位查询:')
  83.         if op == '1':
  84.             uid = int(input('请输入工号:'))
  85.             if uid not in self.personnel:
  86.                 print('该工号不存在!')
  87.             else:
  88.                 p = self.personnel[uid]
  89.                 print('姓名:',p.name)
  90.                 print('职位:',p.job)
  91.                 print('级别:',p.grade)
  92.                 print('工龄:',p.year)
  93.                 print('薪资:',p.wage)
  94.         if op == '2':
  95.             grade = input('职位(E.普通员工;T.组长;M.经理):')
  96.             if grade == 'E':
  97.                 if self.E:
  98.                     print(f'目前普通员工共有{len(self.E)}人')
  99.                     for each in self.E:
  100.                         print(' - '.join(each))
  101.                 else:
  102.                     print('目前公司没有普通员工!')
  103.             if grade == 'T':
  104.                 if self.T:
  105.                     print(f'目前组长共有{len(self.T)}人')
  106.                     for each in self.T:
  107.                         print(' - '.join(each))
  108.                 else:
  109.                     print('目前公司没有组长!')
  110.             if grade == 'M':
  111.                 if self.M:
  112.                     print(f'目前普通员工共有{len(self.M)}人')
  113.                     for each in self.M:
  114.                         print(' - '.join(each))
  115.                 else:
  116.                     print('目前公司没有普通员工!')

  117.     def upgrade(self):
  118.         uid = int(input('请输入工号:'))
  119.         if self.personnel.get(uid):
  120.             person = self.personnel[uid]
  121.             old_wage = person.wage
  122.             print(f'{person.name},工号:{uid},当前职位:{person.job}{person.grade},当前薪资:{person.wage}')
  123.             num = int(input('请输入需要增加的级数:'))
  124.             person.grade += num
  125.             person.adj_grade()
  126.             person.salary()
  127.             print('升级成功!')
  128.             new_wage = person.wage
  129.             adjust = new_wage - old_wage
  130.             print(f'{person.name},工号:{uid},升级后职位:{person.job}{person.grade},升级后薪资:{new_wage}({adjust:+})')
  131.         else:
  132.             print('该工号不存在')

  133.     def demote(self):
  134.         uid = int(input('请输入工号:'))
  135.         if self.personnel.get(uid):
  136.             person = self.personnel[uid]
  137.             old_wage = person.wage
  138.             print(f'{person.name},工号:{uid},当前职位:{person.job}{person.grade},当前薪资:{person.wage}')
  139.             num = int(input('请输入需要减少的级数:'))
  140.             person.grade -= num
  141.             person.adj_grade()
  142.             person.salary()
  143.             print('降级成功!')
  144.             new_wage = person.wage
  145.             adjust = new_wage - old_wage
  146.             print(f'{person.name},工号:{uid},降级后职位:{person.job}{person.grade},降级后薪资:{new_wage}({adjust:+})')
  147.         else:
  148.             print('该工号不存在')

  149. def main():
  150.     m = Manage()
  151.     m.use()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-25 14:51:14 | 显示全部楼层
查看
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-8-25 07:39:49 | 显示全部楼层
.
小甲鱼最新课程 -> 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
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-22 07:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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