鱼C论坛

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

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

  [复制链接]
发表于 2023-4-17 17:18:51 | 显示全部楼层
零基础入门学习Python封面
《零基础入门学习Python》
(最新版)
小甲鱼 著
立即购买
0.定义不同名的类,类里面的方法名一样;生成不同的对象,用一个函数统一调用
1、不关心具体的类型,只关心方法是否符合要求
2、可以
3、
4、降低了耦合
5、不属于
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-17 16:24:12 | 显示全部楼层
ok
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-17 10:47:36 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-16 15:22:15 | 显示全部楼层
0.通过定义不同的类,类具有相同的方法

1.可以使同一个方法在对不同的类进行操作时达到不同的效果

2.可以

3.当你看到一只鸟走起来像鸭子,游泳起来鸭子,叫起来也像鸭子,那么这只鸟就被称为鸭子

4.降低了耦合

5.不是

0.#定义员工大类
class Staff:
    def __init__(self, name, job, grade, year, uid):
        self.name = name
        self.job = job
        self.grade = grade
        self.year = year
        self.uid = uid
        self.salary = 0
    def get_uid(self):
        print(f'工号:{self.uid}')
        
    def get_name(self):
        print(f'姓名:{self.name}')
        
    def get_job(self):
        print(f'职位:{self.job}')

    def get_grade(self):
        print(f'级别:{self.grade}')

    def get_year(self):
        print(f'工龄:{self.year}')

    def get_salary(self):
        print(f'薪资:{self.salary}')


#定义普通员工类
class Employee(Staff):
    def __init__(self, name, job, grade, year, uid):
        super().__init__(name, 'E', grade, year, uid)
        self.salary = 3000 + 500 * self.grade + 50 * self.year

#定义组长类
class Teamleader(Staff):
    def __init__(self, name, job, grade, year, uid):
        super().__init__(name, 'T', grade, year, uid)
        self.salary = 4000 + (800 * self.grade) + (100 * self.year)

#定义经理类
class Manager(Staff):
    def __init__(self, name, job, grade, year, uid):
        super().__init__(name, 'M', grade, year, uid)
        self.salary = 5000 + 1000 * (self.grade + self.year)

#定义管理类
class Manage:
    def __init__(self):
        self.staffs = {}
        self.uid = 10000

    #程序功能入口
    def welcome(self):
        ins = 0
        while ins != '5':
            ins = input('\n1.录入;2.查询;3.升级;4.降级;5.退出:')
            if ins == '1':
                self.creat_staff()
            if ins == '2':
                self.view()
            if ins == '3':
                self.upgrade()
            if ins == '4':
                self.downgrade()
            if ins == '5':
                print('再见~')

    #程序功能:创建新员工
    def creat_staff(self):
        name = input('姓名:')
        job = input('职位(E.普通员工;T.组长;M.经理):')
        year = int(input('工龄:'))
        grade = int(input('级别:'))
        while grade < 1:
            grade = int(input('最低级别为1,请重新输入:'))
        if job == 'E':
            while grade > 10:
                grade = int(input('该职位最高级别为10,请重新输入:'))
                while grade < 1:
                    grade = int(input('最低级别为1,请重新输入:'))
            staff = Employee(name, 'E', grade, year, self.uid)
        if job == 'T':
            while grade > 6:
                grade = int(input('该职位最高级别为6,请重新输入:'))
                while grade < 1:
                    grade = int(input('最低级别为1,请重新输入:'))
            staff = Teamleader(name, 'T', grade, year, self.uid)
        if job == 'M':
            while grade > 3:
                grade = int(input('该职位最高级别为3,请重新输入:'))
                while grade < 1:
                    grade = int(input('最低级别为1,请重新输入:'))
            staff = Manager(name, 'M', grade, year, self.uid)
        self.staffs[self.uid] = staff
        print(f'录入成功!姓名:{name},工号:{self.uid},薪资:{self.staffs[self.uid].salary}')
        self.uid += 1

    #程序功能:查询
    def view(self):
        _ = input('1.员工查询;2.职位查询:')
        if _ == '1':
            ins = int(input('请输入工号:'))
            if ins in self.staffs:
                print(f'姓名:{self.staffs[ins].name}')
                print(f'职位:{self.staffs[ins].job}')
                print(f'级别:{self.staffs[ins].grade}')
                print(f'工龄:{self.staffs[ins].year}')
                print(f'薪资:{self.staffs[ins].salary}')
            else:
                print('该工号不存在!')
        if _ == '2':
            ins = input('职位(E.普通员工;T.组长;M.经理):')
            while ins != 'E' and ins != 'T' and ins != 'M':
                ins = input('请重新输入:')
            if ins == 'E':
                count = 0
                for i in self.staffs.values():
                    if i.job == 'E':
                        count += 1
                if count == 0:
                    print('目前公司没有普通员工!')
                else:
                    print(f'目前普通员工共有{count}人')
                    for j in self.staffs.items():
                        if j[1].job == 'E':
                            print(f'{j[0]} - {j[1].name}')
            
            if ins == 'T':
                count = 0
                for i in self.staffs.values():
                    if i.job == 'T':
                        count += 1
                if count == 0:
                    print('目前公司没有组长!')
                else:
                    print(f'目前组长共有{count}人')
                    for j in self.staffs.items():
                        if j[1].job == 'T':
                            print(f'{j[0]} - {j[1].name}')

            if ins == 'M':
                count = 0
                for i in self.staffs.values():
                    if i.job == 'M':
                        count += 1
                if count == 0:
                    print('目前公司没有经理!')
                else:
                    print(f'目前普通员工共有{count}人')
                    for j in self.staffs.items():
                        if j[1].job == 'M':
                            print(f'{j[0]} - {j[1].name}')

    #程序功能:升级
    def upgrade(self):
        ins = int(input('请输入工号:'))
        if ins in self.staffs:
            print(f'{self.staffs[ins].name},工号:{self.staffs[ins].uid},当前职位:{self.staffs[ins].job}{self.staffs[ins].grade},当前薪资:{self.staffs[ins].salary}')
            up = int(input('请输入需要增加的级数:'))
            while up < 1:
                up = int(input('请输入正确的级数:'))
            oldsalary = self.staffs[ins].salary
            if self.staffs[ins].job == 'E':
                self.staffs[ins].grade += up
                if self.staffs[ins].grade > 10:
                    self.staffs[ins] = Teamleader(self.staffs[ins].name, 'T', 1, self.staffs[ins].year, ins)
               

            elif self.staffs[ins].job == 'T':
                self.staffs[ins].grade += up
                if self.staffs[ins].grade > 6:
                    self.staffs[ins] = Manager(self.staffs[ins].name, 'M', 1, self.staffs[ins].year, ins)
               

            elif self.staffs[ins].job == 'M':
                self.staffs[ins].grade += up
                if self.staffs[ins].grade > 3:
                    print("升至最高级!")
                    self.staffs[ins].grade = 3
                    
            print('升级成功!')
            print(f'{self.staffs[ins].name},工号:{self.staffs[ins].uid},升级后职位:{self.staffs[ins].job}{self.staffs[ins].grade},升级后薪资:{self.staffs[ins].salary}({(self.staffs[ins].salary - oldsalary):+})')
        else:
            print('该工号不存在!')

    #程序功能:降级
    def downgrade(self):
        ins = int(input('请输入工号:'))
        if ins in self.staffs:
            print(f'{self.staffs[ins].name},工号:{self.staffs[ins].uid},当前职位:{self.staffs[ins].job}{self.staffs[ins].grade},当前薪资:{self.staffs[ins].salary}')
            down = int(input('请输入需要减少的级数:'))
            while down < 1:
                down = int(input('请输入正确的级数:'))
            oldsalary = self.staffs[ins].salary
            if self.staffs[ins].job == 'M':
                self.staffs[ins].grade -= down
                if self.staffs[ins].grade < 1:
                    self.staffs[ins] = Teamleader(self.staffs[ins].name, 'T', 6, self.staffs[ins].year, ins)
               
            elif self.staffs[ins].job == 'T':
                self.staffs[ins].grade -= down
                if self.staffs[ins].grade < 1:
                    self.staffs[ins] = Employee(self.staffs[ins].name, 'E', 10, self.staffs[ins].year, ins)
               
            elif self.staffs[ins].job == 'E':
                self.staffs[ins].grade -= down
                if self.staffs[ins].grade < 1:
                    print("降至最低级!")
                    self.staffs[ins].grade = 1
               
            print('降级成功!')
            print(f'{self.staffs[ins].name},工号:{self.staffs[ins].uid},降级后职位:{self.staffs[ins].job}{self.staffs[ins].grade},降级后薪资:{self.staffs[ins].salary}({(self.staffs[ins].salary - oldsalary):+})')
        else:
            print('该工号不存在!')

def main():
    m = Manage()
    m.welcome()

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

使用道具 举报

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

使用道具 举报

发表于 2023-4-10 15:15:20 | 显示全部楼层
good
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-10 14:59:31 From FishC Mobile | 显示全部楼层
hhh
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2023-4-10 12:32:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-7 20:06:55 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-7 19:06:02 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-6 15:42:30 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-5 14:56:06 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-4 16:45:42 | 显示全部楼层
123
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-3 17:32:57 | 显示全部楼层
加油!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-3 14:39:07 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-3 11:06:44 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-3 10:23:09 | 显示全部楼层
查看答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2023-3-29 23:02:36 | 显示全部楼层
打卡
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-21 12:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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