癌细胞zz 发表于 2024-1-24 21:06:07

1

学习pythonli 发表于 2024-1-23 15:14:03

1

塔亚柔丝 发表于 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()
      

白白白吖 发表于 2024-1-20 20:46:47

{:5_106:}

rlll1228 发表于 2024-1-20 13:59:25

2024.01.20

xiaolongli 发表于 2024-1-19 10:13:44

{:10_277:}

sxxkd 发表于 2024-1-18 18:04:41

12

Jane_bubble 发表于 2024-1-17 19:52:36

0.一个父类方法,多种子类功能。一个函数方法,多种类的功能

1.灵活,有条理

2.yes

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

4.

5.no

fanlinhui 发表于 2024-1-14 20:57:27

1

JerryWu~ 发表于 2024-1-12 20:14:59

kk

周成枍 发表于 2024-1-11 11:10:53

1

cocobnar 发表于 2024-1-9 13:42:00

完成

真不知道叫什么 发表于 2024-1-5 15:34:56

同一个运算符、函数、或对象在不同场景下具有不同的作用效果,重写也是实现多态的一种方式
同一个运算符、函数、或对象在不同场景下具有不同的作用效果
可以
不知道
降低了耦合
不属于

汪汪汪嗷呜 发表于 2024-1-4 13:10:25

支持

xiaozhuzhu12138 发表于 2024-1-3 21:32:20

0.利用之类可以对父类同名函数的重写机制
1.可以实现一个函数多种用法
2.可以的
3.
4.低耦合
5.不是

xufai1999 发表于 2024-1-3 11:37:07

1

一条正弦 发表于 2023-12-31 22:50:27

hi

1452775909 发表于 2023-12-31 21:13:15

kkda

fhh001 发表于 2023-12-31 08:44:19

0

萧随风 发表于 2023-12-28 16:31:56

本帖最后由 萧随风 于 2023-12-28 16:34 编辑

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

1.
提高了代码的灵活性

2.
可以

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

4.
降低了耦合度

5.
属于
页: 16 17 18 19 20 21 22 23 24 25 [26] 27 28 29 30 31 32 33 34 35
查看完整版本: 第063讲:类和对象(VI)| 课后测试题及答案