鱼C论坛

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

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

  [复制链接]
发表于 2024-2-13 18:53:49 | 显示全部楼层
零基础入门学习Python封面
《零基础入门学习Python》
(最新版)
小甲鱼 著
立即购买
问答题
0. 面对不同的对象,同样的方法接口可以实现不同的功能
1. 增加程序的灵活性和可扩展性
2. 可以
3. 如果它走起来像鸭子,叫起来像鸭子,那么它就是鸭子
4. 低耦合
5. 不是
动动手
class Member:
    def __init__(self, name, job, grade, year, uid):
        self.name = name
        self.job = job
        self.grade = grade
        self.year = year
        self.uid = uid
        self.wage = 0
    def wages(self):
        if self.job == 'E':
            self.wage = 3000 + 500*int(self.grade) + 50*int(self.year)
        if self.job == 'T':
            self.wage = 4000 + 800*int(self.grade) + 100*int(self.year)
        if self.job ==  'M':
            self.wage = 5000 + 1000*(int(self.grade )+ int(self.year))
        return self.wage
class EIM(Member):
    def __init__(self):
        self.members = {}
        self.uid = 10000
        
    # 程序功能入口
    def welcome(self):
        ins = 0
        #print("欢迎使用员工管理系统")
        while ins != '5':
            ins = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
            if ins == '1':
                self.enter()
            if ins == '2':
                self.query()
            if ins == '3':
                self.upgradation()
            if ins == '4':
                self.downgrading()
            if ins == '5':
                pass
                #print("感谢使用,再见!")
               
    # 程序功能:创建新卡
    def enter(self):
        name = input("姓名:")
        job = input("职位(E.普通员工;T.组长;M.经理):")
        year = int(input('工龄:'))
        grade = int(input('级别:'))
        member = Member(name, job, grade, year,self.uid)
        wage = member.wages()
        print(wage)
        self.members[self.uid] = member
        print(f"录入成功!姓名:{name},工号:{self.uid},薪资:{wage}")
        self.uid += 1
        
    #查询
    def query(self):
        n = int(input('1.员工查询;2.职位查询:'))
        if n == 1:
            uid = int(input('请输入工号:'))
            a = uid in self.members.keys()
            if a == False:
                print('该工号不存在!')
            else:
                name = self.members.get(uid).name
                job = self.members.get(uid).job
                grade = self.members.get(uid).grade
                year = self.members.get(uid).year
                wage = self.members.get(uid).wage
                print(f"姓名:{name} \n 职位:{job} \n 级别:{grade} \n 工龄:{year} \n  薪资:{wage}")
        if n == 2:
            job = input("职位(E.普通员工;T.组长;M.经理):")
            number = 0
            people = {}
            for h in range(10000,self.uid,1):
                jobb = self.members.get(h).job
                if jobb == job:
                    people[h] = self.members.get(h).name
                    number += 1
                print(f'目前{job}共有{number}人:')
                for key in people:
                    print(f'{key}-{people[key]}\n')
               
    def upgradation(self):
        pass
    def downgrading(self):
        pass
   
   
n=EIM()
n.welcome()
        
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2024-2-9 09:07:22 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

发表于 2024-2-5 10:35:44 | 显示全部楼层
0.不同参数不同对待
1.简洁
2.可以
3.不知道
4.降低了炸耦合
5.不属于
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-3 23:52:18 | 显示全部楼层
.
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-1-31 13:26:33 | 显示全部楼层
问答题:
0.什么参数都可以传入,根据传入的不同做出不同的反应
1.好使
2.可以
3.不知道
4.增强内聚
5.应该不算吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2024-1-26 10:58:33 | 显示全部楼层
查看解析
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-25 16:40:14 | 显示全部楼层
0.通过类的定义区分作用
1.可以根据参数执行不同的方法
2.是多态
3.丑小鸭装白天鹅?
4.降低耦合?
5.不是
动动手:
class Members:
    def __init__(self,name,job,grade,year,uid,salary,jobname):
        self.name=name
        self.job=job
        self.grade=grade
        self.year=year
        self.uid=uid
        self.salary=self.get_salary()
        self.jobname=self.get_jobname()
    def get_salary(self):
        if self.job=='E':
            self.salary=3000+500*self.grade+50*self.year
        elif self.job=='T':
            self.salary=4000+800*self.grade+100*self.year
            self.jobname="组长"
        elif self.job=='M':
            self.salary=5000+1000*self.grade+1000*self.year
        return self.salary
    def get_jobname(self):
        if self.job=='E':
            self.jobname="普通员工"
        elif self.job=='T':
            self.jobname="组长"
        elif self.job=='M':
            self.jobname="经理"
        return self.jobname        
class Employee(Members):
    def __init__(self,name,job,grade,year,uid,salary=None):
        super().__init__(name,job,grade,year,uid,salary=None)
        self.job="E"
        self.jobname="普通员工"
    def salary(self):
        super().salary()

class Manage():
    def __init__(self):
        
        self.memebers={}
        self.uid=10000
        self.Job=['E','T','M']
        
    def manage(self):
        a='0'
        while a!="5":
            print()
            a=input("1.录入;2.查询;3.升级;4.降级;5.退出:")
            if a=="1":
                self.getin()
            elif a=="2":
                self.find()
            elif a=="3":
                self.up()
            elif a=='4':
                self.down()

    def creategrade(self,job,grade):
        if job=='E':
            if grade>10:
                return [False,10]
            elif grade<1:
                return [False,0]
            else:
                return [True,10]
        elif job=='T':
            if grade>6:
                return [False,6]
            elif grade<1:
                return [False,10]
            else:
                return [True,6]
        elif job=='M':
            if grade>3:
                return [False,3]
            elif grade<1:
                return [False,6]
            else:
                return [True,3]
   
    def getin(self):
        name=input("姓名:")
        job=input("职位(E.普通员工;T.组长;M.经理)")
        while job!="E" and job!="T" and job!="M":
            job=input("请按照对应字母录入职位(E.普通员工;T.组长;M.经理)")
        year=int(input("工龄:"))
        grade=int(input("级别:"))
        gg=self.creategrade(job,grade)
        while not gg[0]:
            grade=int(input(f"该职位最高级别为{gg[1]},请重新录入级别:"))
            gg=self.creategrade(job,grade)
        self.memebers[self.uid]=Members(name,job,grade,year,self.uid,0,"无")
        print(f"录入成功!姓名:{name},工号:{self.uid},薪资:{self.memebers[self.uid].salary}")
        self.uid+=1


    def find(self):
        tt=input("1.员工查询;2.职位查询:")
        if tt=='1':
            uid=int(input("请输入工号:"))
            if uid>self.uid:
                print("该工号不存在")
            else:
                print(f"姓名:{self.memebers[uid].name}")
                print(f"职位:{self.memebers[uid].job}")
                print(f"级别:{self.memebers[uid].grade}")
                print(f"工龄:{self.memebers[uid].year}")
                print(f"薪资:{self.memebers[uid].salary}")
        elif tt=="2":
            job=input("职位(E.普通员工;T.组长;M.经理)")
            count=0
            x=[]
            for i in range(10000,10000+len(self.memebers)):
                if self.memebers[i].job==job:
                    jobname=self.memebers[i].jobname
                    count+=1
                    x.append(i)
                    print(x)
            if count==0:
                print("公司目前没有")
            else:
                print(f"目前{jobname}有{count}人:")
                for each in x:
                    print(f"{each}-{self.memebers[each].name}")         
        else:
            print("输入错误!")


    def up(self):
        uid=int(input("请输入工号:"))
        sign=0
        if uid>self.uid:
            print("该工号不存在")
        else:
            print(f"{self.memebers[uid].name},工号:{uid},当前职位:{self.memebers[uid].job}{self.memebers[uid].grade},当前薪资:{self.memebers[uid].salary}")
            salarybef=self.memebers[uid].salary
            change=int(input("请输入需要增加的级数:"))
            grade=self.memebers[uid].grade+change
            job=self.memebers[uid].job
            while not self.creategrade(job,grade)[0]:
                if self.Job.index(job)+1<len(self.Job):
                    grade=grade-self.creategrade(job,grade)[1]
                    job=self.Job[self.Job.index(job)+1]
                    sign=1
                else:
                    print("超出职级上限!")
                    break
            else:
                if sign==1:
                    grade=1
                self.memebers[uid]=Members(self.memebers[uid].name,job,grade,self.memebers[uid].year,uid,0,"无")
                salaryafter=self.memebers[uid].salary
                print("升级成功!")
                print(f"{self.memebers[uid].name},工号:{uid},升级后职位:{self.memebers[uid].job}{self.memebers[uid].grade},升级后薪资:{salaryafter}({salaryafter-salarybef:+})")

    def down(self):
        uid=int(input("请输入工号:"))
        sign=0
        if uid>self.uid:
            print("该工号不存在")
        else:
            print(f"{self.memebers[uid].name},工号:{uid},当前职位:{self.memebers[uid].job}{self.memebers[uid].grade},当前薪资:{self.memebers[uid].salary}")
            salarybef=self.memebers[uid].salary
            change=int(input("请输入需要降低的级数:"))
            grade=self.memebers[uid].grade-change
            job=self.memebers[uid].job
            while not self.creategrade(job,grade)[0]:
                if self.Job.index(job)>0:
                    grade=grade+self.creategrade(job,grade)[1]-change
                    job=self.Job[self.Job.index(job)-1]
                    sign=1
                else:
                    print("超出职级下限!")
                    break
            else:
                if sign==1:
                    grade=self.creategrade(job,100)[1]
                self.memebers[uid]=Members(self.memebers[uid].name,job,grade,self.memebers[uid].year,uid,0,"无")
                salaryafter=self.memebers[uid].salary
                print("降级成功!")
                print(f"{self.memebers[uid].name},工号:{uid},升级后职位:{self.memebers[uid].job}{self.memebers[uid].grade},降级后薪资:{salaryafter}({salaryafter-salarybef:+})")


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

使用道具 举报

发表于 2024-1-24 21:06:07 | 显示全部楼层
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
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-19 16:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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