鱼C论坛

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

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

  [复制链接]
发表于 2023-12-28 11:50:59 | 显示全部楼层
零基础入门学习Python封面
《零基础入门学习Python》
(最新版)
小甲鱼 著
立即购买
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
回复 支持 反对

使用道具 举报

发表于 2023-12-28 10:50:14 | 显示全部楼层
0.
1.
方便灵活
2.
可以
3.

4.
高内聚

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

使用道具 举报

发表于 2023-12-28 09:55:43 | 显示全部楼层
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-12-27 15:16:30 | 显示全部楼层
0,通过类的方法
1,可以在不判断类型的情况下直接使用方法
2,可以
3,
4,增加了内聚
5,属于

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

使用道具 举报

发表于 2023-12-27 01:31:35 | 显示全部楼层
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-12-26 16:22:29 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-12-26 14:28:12 | 显示全部楼层
问答题:
0. Python 是如何体现面向对象的多态特性的?
通过重写的方式,重写了类的方法。

1. 多态的优势是什么?
在不影响类的属性的基础上,可以重新修改类的方法。

2. 请问在 Python 中,1+1 == 2 跟 '1' + '1' == '11',这种根据操作数类型不同,得到不同结果的现象,可以称为多态吗?
可以

3. 关于鸭子类型这个名字的来源,有一句谚语,你知道是什么吗?
一只鸟长得像鸭子,叫声像鸭子,走路也像鸭子,那它就是鸭子

4. 高内聚低耦合,是判断软件设计好坏的标准。在程序设计中,我们都希望尽可能做到高内聚(内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事,它描述的是模块内的功能联系)和低耦合(耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据)。那么请问,使用鸭子类型,是增强了内聚呢,还是降低了耦合度呢?
高内聚

5. 请问下面代码的执行结果,是属于 Python 的多态现象吗?
不是

动动手:
#员工属性
class Users:
    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

#计算工资
class Money:
    def salary(self,job,grade,year):
        if job=="E":
            money=3000+500*grade+50*year
        elif job=="T":
            money=4000+800*grade+100*year
        elif job=="M":
            money=5000+1000*(grade+year)
        return money



class Action(Money):
    def __init__(self):
        self.users={}
        self.no=10000

    #启动程序   
    def begin(self):
        a=0
        while a !="5":
            a=input("\n1.录入;2.查询;3.升级;4.降级;5.退出:")
            if a=="1":
                self.insert()
            elif a=="2":
                self.search()
            elif a=="3":
                self.up()
            elif a=="4":
                self.down()
            elif a=="5":
                break
            
    #录入
    def insert(self):
        name=input("姓名:")
        job=input("职位(E.普通员工;T.组长;M.经理):")
        year=int(input("工龄:"))
        grade=int(input("级别:"))
        if job=="E":
            if grade >10 or grade <1:
                grade=int(input("该职位最高级别为10,请重新录入级别:"))
        elif job=="T":
            if grade >6 or grade <1:
                grade=int(input("该职位最高级别为6,请重新录入级别:"))
        elif job=="M":
            if grade >3 or grade <1:
                grade=int(input("该职位最高级别为3,请重新录入级别:"))     
        uid=self.no
        self.users[self.no]=Users(name,job,grade,year,uid)
        money=self.salary(job,grade,year)
        print(f"录入成功!姓名:{name},工号:{uid},薪资:{money}")
        self.no+=1

    #查询
    def search(self):
        whichsearch=input("1.员工查询;2.职位查询:")
        if whichsearch =="1":
            uid=int(input("请输入工号:"))
            if not self.users.get(uid):
                print("该工号不存在!")
            else:
                print(f"姓名:{self.users[uid].name}")
                print(f"职位:{self.users[uid].job}")
                print(f"级别:{self.users[uid].grade}")
                print(f"工龄:{self.users[uid].year}")
                print(f"薪资:{self.salary(self.users[uid].job,self.users[uid].grade,self.users[uid].year)}")
        if whichsearch =="2":
            job=input("职位(E.普通员工;T.组长;M.经理):")
            total=0
            for i in self.users:
                if self.users[i].job==job:
                    total+=1
            if total==0:
                if job=="E":
                    print(f"目前公司没有普通员工!")
                elif job=="T":
                    print(f"目前公司没有组长!")
                elif job=="M":
                    print(f"目前公司没有经理!")   
            else:
                print(f"目前普通员工共有{total}人:")
                for i in self.users:
                    if self.users[i].job==job:
                        print(f"{self.users[i].uid} - {self.users[i].name}")

    #升级
    def up(self):
        uid=int(input("请输入工号:"))
        print(f"{self.users[uid].name},工号:{uid},当前职位:{self.users[uid].job}{self.users[uid].grade},当前薪资:{self.salary(self.users[uid].job,self.users[uid].grade,self.users[uid].year)}")
        new=int(input("请输入需要增加的级别:"))
        if self.users[uid].job=="E":
            if self.users[uid].grade+new <=10:
                newgrade=self.users[uid].grade+new
            if self.users[uid].grade+new >10 and self.users[uid].grade <17:
                newgrade=1
                newjob="T"
            if self.users[uid].grade+new >=17:
                newgrade=1
                newjob="M"
        elif self.users[uid].job=="T":
            if self.users[uid].grade+new <=6:
                newgrade=self.users[uid].grade+new
            if self.users[uid].grade+new >6:
                newgrade=1
                newjob="M"     
        elif self.users[uid].job=="M":
            newgrade=self.users[uid].grade+new
        print("升级成功!")
        print(f"{self.users[uid].name},工号:{uid},升级后职位:{newjob}{newgrade},升级后的薪资:{self.salary(newjob,newgrade,self.users[uid].year)}(+{self.salary(newjob,newgrade,self.users[uid].year)-self.salary(self.users[uid].job,self.users[uid].grade,self.users[uid].year)})")
        self.users[uid].job=newjob
        self.users[uid].grade=newgrade
   

    #降级
    def down(self):
        uid=int(input("请输入工号:"))
        print(f"{self.users[uid].name},工号:{uid},当前职位:{self.users[uid].job}{self.users[uid].grade},当前薪资:{self.salary(self.users[uid].job,self.users[uid].grade,self.users[uid].year)}")
        new=int(input("请输入需要减少的级数:"))
        if self.users[uid].job=="E":
            if self.users[uid].grade-new <=0:
                newgrade=self.users[uid].grade-new
        elif self.users[uid].job=="T":
            if self.users[uid].grade+10-new >10:
                newgrade=self.users[uid].grade-new
            if self.users[uid].grade+new <=10:
                newgrade=10
                newjob="E"     
        elif self.users[uid].job=="M":
            if self.users[uid].grade+16-new>16:
                newgrade=self.users[uid].grade-new
            if self.users[uid].grade+16-new>10 and self.users[uid].grade+16-new<=16:
                newgrade=6
                newjob="T"
            if  self.users[uid].grade+16-new<=10:
                newgrade=10
                newjob="E"
        print("降级成功!")
        print(f"{self.users[uid].name},工号:{uid},降级后职位:{newjob}{newgrade},降级后的薪资:{self.salary(newjob,newgrade,self.users[uid].year)}({self.salary(newjob,newgrade,self.users[uid].year)-self.salary(self.users[uid].job,self.users[uid].grade,self.users[uid].year)})")
        self.users[uid].job=newjob
        self.users[uid].grade=newgrade
            

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

使用道具 举报

发表于 2023-12-25 16:12:21 | 显示全部楼层
0.子类可以重写父类的同名方法
1.子类可以重写父类的同名方法
2.可以
3.一只鸟长得像鸭子,叫声像鸭子,走路也像鸭子,那它就是鸭子
5.不是
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-23 21:57:20 | 显示全部楼层
问答题:
0.子类都继承了同一个父类,且都重写了父类的构造函数和方法
1.在不检查类的情况下,可以直接执行不同的子类,从而得到不同的效果
2.可以
3.黑猫白猫,能抓老鼠的就是好猫
4.高内聚,低耦合
5.不是,此代码没有继承,且只是单纯的默认参数赋值而已
动动手
0.
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-21 22:52:42 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-12-19 17:21:17 From FishC Mobile | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-12-19 17:15:12 From FishC Mobile | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-12-17 11:27:30 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-12-15 22:41:00 | 显示全部楼层
朕想知道
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-13 16:08:02 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-12-13 11:57:40 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-12-12 10:24:59 | 显示全部楼层
学习
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-12-11 08:46:31 | 显示全部楼层
我曾经跨过山和大海,也传过人山人海
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-10 03:52:33 | 显示全部楼层
yes
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-12-6 21:29:48 | 显示全部楼层
answer
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-21 21:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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