鱼C论坛

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

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

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

使用道具 举报

发表于 2024-1-23 15:14:03 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-1-21 19:52:11 | 显示全部楼层
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 Data:
    def __init__(self, name, job, grade, year, uid):
        self.name = name
        self.job = job
        self.grade = grade
        self.year = year
        self.uid = uid


class system:
    def __init__(self):
        self.data = []
        self.uid = 10000

    def function(self):
        while True:
            ins = input("\n1.录入;2.查询;3.升级;4.降级;5.退出:")
            if ins == '1':
                self.input()
            if ins == '2':
                self.index()
            if ins == '3':
                self.upgrade()
            if ins == '4':
                self.downgrade()
            if ins == '5':
                break

    def limit(self):
        self.grade = int(input("级别:"))
        while True:
            if self.job == 'E' and self.grade >  10:
                self.grade = int(input("该职位最高级别为10,请重新录入级别:"))
            elif self.job == 'T' and self.grade >  6:
                self.grade = int(input("该职位最高级别为6,请重新录入级别:"))
            elif self.job == 'M' and self.grade >  3:
                self.grade = int(input("该职位最高级别为3,请重新录入级别:"))
            else:
                break

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

    def input(self):
        self.name = input("姓名:")
        self.job = input("职位(E.普通员工;T.组长;M.经理):")
        self.year = int(input("工龄:"))
        self.limit()
        self.data.append(Data(self.name, self.job, self.grade, self.year, self.uid))
        s = self.salary(self.job, self.grade, self.year)
        print(f"录入成功!姓名:{self.name}, 工号{self.uid}, 薪资{s}")
        self.uid += 1

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

    def upgrade(self):
        uid = int(input("请输入工号:"))
        counts = 0
        for each in self.data:
            if each.uid == uid:
                s_1 = self.salary(each.job, each.grade, each.year)
                print(f"{each.name}, 工号:{each.uid}, 当前职位:{each.job}{each.grade}, 当前薪资:{s_1}")
                counts += 1
                break
        if counts == 0:
            print("该工号不存在!")
            return None
        up = int(input("请输入需要增加的级数:"))
        if each.job == 'E':
            if each.grade + up > 10:
                each.job = 'T'
                each.grade = 1
            else:
                each.grade = each.grade + up
            print("升级成功")
            s_2 = self.salary(each.job, each.grade, each.year)
            print(f"{each.name}, 工号:{each.uid}, 升级后职位:{each.job}{each.grade}, 升级后薪资:{s_2}({+s_2-s_1})")
        elif each.job == 'T':
            if each.grade + up > 6:
                each.job = 'M'
                each.grade = 1
            else:
                each.grade = each.grade + up
            print("升级成功")
            s_2 = self.salary(each.job, each.grade, each.year)
            print(f"{each.name}, 工号:{each.uid}, 升级后职位:{each.job}{each.grade}, 升级后薪资:{s_2}({+s_2-s_1})")
        elif each.job == 'M':
            if each.grade + up > 3:
                print("升级失败")
            else:
                each.grade = each.grade + up
                print("升级成功")
                s_2 = self.salary(each.job, each.grade, each.year)
                print(f"{each.name}, 工号:{each.uid}, 升级后职位:{each.job}{each.grade}, 升级后薪资:{s_2}({+s_2-s_1})")
        
                              
    def downgrade(self):
        uid = int(input("请输入工号:"))
        counts = 0
        for each in self.data:
            if each.uid == uid:
                s_1 = self.salary(each.job, each.grade, each.year)
                print(f"{each.name}, 工号:{each.uid}, 当前职位:{each.job}{each.grade}, 当前薪资:{s_1}")
                counts += 1
                break
        if counts == 0:
            print("该工号不存在!")
            return None
        up = int(input("请输入需要减少的级数:"))
        if each.job == 'E':
            if each.grade - up <= 0:
                print("降级失败")
            else:
                each.grade = each.grade - up
                print("降级成功")
                s_2 = self.salary(each.job, each.grade, each.year)
                print(f"{each.name}, 工号:{each.uid}, 降级后职位:{each.job}{each.grade}, 降级后薪资:{s_2}({+s_2-s_1})")
        elif each.job == 'T':
            if each.grade - up <= 0:
                each.job = 'E'
                each.grade = 10
            else:
                each.grade = each.grade - up
            print("降级成功")
            s_2 = self.salary(each.job, each.grade, each.year)
            print(f"{each.name}, 工号:{each.uid}, 降级后职位:{each.job}{each.grade}, 降级后薪资:{s_2}({+s_2-s_1})")
        elif each.job == 'M':
            if each.grade - up <= 0:
                each.job = 'T'
                each.grade = 6
            else:
                each.grade = each.grade - up
            print("降级成功")
            s_2 = self.salary(each.job, each.grade, each.year)
            print(f"{each.name}, 工号:{each.uid}, 降级后职位:{each.job}{each.grade}, 降级后薪资:{s_2}({+s_2-s_1})")
            

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

使用道具 举报

发表于 2024-1-20 20:46:47 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-1-20 13:59:25 | 显示全部楼层
2024.01.20
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2024-1-18 18:04:41 | 显示全部楼层
12
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-1-17 19:52:36 | 显示全部楼层
0.一个父类方法,多种子类功能。一个函数方法,多种类的功能

1.灵活,有条理

2.yes

3.如果它走起来像鸭子,叫起来像鸭子,那么它就是鸭子

4.

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

使用道具 举报

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

使用道具 举报

发表于 2024-1-12 20:14:59 | 显示全部楼层
kk
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

发表于 2024-1-9 13:42:00 | 显示全部楼层
完成
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-1-5 15:34:56 | 显示全部楼层
同一个运算符、函数、或对象在不同场景下具有不同的作用效果,重写也是实现多态的一种方式
同一个运算符、函数、或对象在不同场景下具有不同的作用效果
可以
不知道
降低了耦合
不属于

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

使用道具 举报

发表于 2024-1-4 13:10:25 | 显示全部楼层
支持
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-1-3 21:32:20 | 显示全部楼层
0.利用之类可以对父类同名函数的重写机制
1.可以实现一个函数多种用法
2.可以的
3.
4.低耦合
5.不是
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2023-12-31 22:50:27 | 显示全部楼层
hi
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

发表于 2023-12-31 08:44:19 | 显示全部楼层
0
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-12-28 16:31:56 | 显示全部楼层
本帖最后由 萧随风 于 2023-12-28 16:34 编辑

0.
同一个函数,运算符或者对象在不同的场景下有不同的作用效果

1.
提高了代码的灵活性

2.
可以

3.
在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定

4.
降低了耦合度

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-21 15:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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