闲听花落 发表于 2023-8-11 16:31:38

每日打卡

wencheng.song 发表于 2023-8-11 14:46:02

1

sunyuheng 发表于 2023-8-9 14:27:32

0.在不同场景有不同的作用
1.方便,可以对父类的函数的重写
2.可以,一个是数值的相加,一个是字符串的拼接
3.长得像就可以
4.降低了耦合
5.不是
动动手
0.

insistPython 发表于 2023-8-9 10:13:53

1

鲨鱼辣椒777 发表于 2023-8-3 23:59:57

1

小甲鱼的fan 发表于 2023-8-3 18:15:37

# 第0题
# 就是传入的对象不同,则执行的功能效果也不同

# 第1题
# 灵活。针对不同对象有不同的功能效果

# 第2题
# 可以

# 第3题
# 不知道

# 第4题
# 降低了耦合度

# 第5题
# 不属于

ztx13363839373 发表于 2023-7-30 16:48:28

{:5_90:}

serendipity-11 发表于 2023-7-29 13:50:38

11

YHJxiao 发表于 2023-7-29 11:31:49

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.这不是我们C艹的重载吗,下次记得说明来源

源冰源 发表于 2023-7-27 22:28:07

0

Qoolies 发表于 2023-7-26 15:30:45

本帖最后由 Qoolies 于 2023-7-26 15:44 编辑

# 简单的员工管理程序
# 具体要求见:https://fishc.com.cn/thread-214231-1-2.html


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

    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 Employee(Staff):
    def __init__(self, name, job, grade, year, uid):
      super().__init__(name, job, grade, year, uid)

    def salary(self):
      return 3000 + 500 * self.grade + 50 * self.year


class TeamLeader(Staff):
    def __init__(self, name, job, grade, year, uid):
      super().__init__(name, job, grade, year, uid)

    def salary(self):
      return 4000 + 800 * self.grade + 100 * self.year


class Manager(Staff):
    def __init__(self, name, job, grade, year, uid):
      super().__init__(name, job, grade, year, uid)

    def salary(self):
      return 5000 + 1000 * (self.grade + self.year)


class Manage:
    def __init__(self):
      self.member = dict()
      self.uid = 10000

    def intro(self):
      opt = None
      while opt != "5":
            opt = input("\n1.录入;2.查询;3.升级;4.降级;5.退出:")
            if opt == "1":
                self.record()
            elif opt == "2":
                self.query()
            elif opt == "3":
                self.up_grade()
            elif opt == "4":
                self.down_grade()
            elif opt == "5":
                print("程序退出!")

    def job_check(self):
      job = input("职位(E.普通员工;T.组长;M.经理):")
      while job not in ("E", "T", "M"):
            job = input("请输入正确职位代码!")
      return job

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

    def record(self):
      name = input("姓名:")
      job = self.job_check()
      year = int(input("工龄:"))
      grade = self.grade_check(job)
      if job == "E":
            self.member = Employee(name, job, grade, year, self.uid)
      elif job == "T":
            self.member = TeamLeader(name, job, grade, year, self.uid)
      elif job == "M":
            self.member = Manager(name, job, grade, year, self.uid)
      print(f"录入成功!姓名:{name}, 工号:{self.uid}, 薪资:{self.member.salary()}")
      self.uid += 1

    def query(self):
      opt = None
      while opt not in ("1", "2"):
            opt = input("1.员工查询;2职位查询:")
      if opt == "1":
            uid = int(input("请输入工号:"))
            if uid in self.member:
                print(f"姓名:{self.member.name}")
                print(f"职位:{self.member.job}")
                print(f"级别:{self.member.grade}")
                print(f"工龄:{self.member.year}")
                print(f"薪资:{self.member.salary()} ")
            else:
                print("该工号不存在!")

      elif opt == "2":
            count = 0
            job_info = list()
            job = self.job_check()
            if job == "E":
                job_name = "普通员工"
            elif job == "T":
                job_name = "组长"
            elif job == "M":
                job_name = "经理"
            for each in self.member.values():
                if each.job == job:
                  count += 1
                  job_info.append(f"{each.uid} - {each.name}")
            if count == 0:
                print(f"目前公司没有{job_name}。")
            else:
                print(f"目前{job_name}共有 {count} 人:")
                for each in job_info:
                  print(each)

    def up_grade(self):
      uid = int(input("请输入工号:"))
      if uid in self.member:
            c_salary = self.member.salary()
            print(
                f"{self.member.name}, 工号:{uid}, 当前职位:{self.member.job}{self.member.grade}, 当前薪资:{c_salary}")
            self.member.grade += int(input("请输入需要增加的级数:"))
            succeed = False
            if self.member.job == "E" and self.member.grade > 10:
                self.member.job = "T"
                self.member = TeamLeader(self.member.name, self.member.job, 1, self.member.year,
                                              uid)
                succeed = True
            elif self.member.job == "T" and self.member.grade > 6:
                self.member.job = "M"
                self.member = Manager(self.member.name, self.member.job, 1, self.member.year, uid)
                succeed = True
            elif self.member.job == "M" and self.member.grade > 3:
                print("超过规定级别!")

            if succeed:
                print("升级成功!")
                n_salary = self.member.salary() - c_salary
                print(
                  f"{self.member.name}, 工号:{uid}, 当前职位:{self.member.job}{self.member.grade}, 当前薪资:{self.member.salary()}({n_salary:+})")
      else:
            print("工号不存在")

    def down_grade(self):
      uid = int(input("请输入工号:"))
      if uid in self.member:
            c_salary = self.member.salary()
            print(f"{self.member.name}, 工号:{uid}, 当前职位:{self.member.job}{self.member.grade}, 当前薪资:{c_salary}")
            self.member.grade -= int(input("请输入需要减少的级数:"))
            succeed = False
            if self.member.job == "E" and self.member.grade < 1:
                print("超过最低级别!")
            elif self.member.job == "T" and self.member.grade < 1:
                self.member.job = "E"
                self.member = Employee(self.member.name, self.member.job, 10, self.member.year, uid)
                succeed = True
            elif self.member.job == "M" and self.member.grade < 1:
                self.member.job = "T"
                self.member = TeamLeader(self.member.name, self.member.job, 6, self.member.year, uid)
                succeed = True

            if succeed:
                print("降级成功!")
                n_salary = self.member.salary() - c_salary
                print(
                  f"{self.member.name}, 工号:{uid}, 当前职位:{self.member.job}{self.member.grade}, 当前薪资:{self.member.salary()}({n_salary:+})")
      else:
            print("工号不存在")


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


main()

蘭蘭蘭 发表于 2023-7-25 15:06:58

+1

hjl111 发表于 2023-7-25 14:29:21

0.面对不同对象体现不同的作用
1.一个方法可以应用于各种对象
2.可以
3.春江水暖鸭先知
4.高内聚
5.是
0.
class Employee_cl:
    def Employee_job(self,job):
      state=['E.普通员工','T.组长','M.经理']
      while True:
            if job=='E':
                job=state
                break
            elif job=='T':
                job=state
                break
            elif job=='M':
                job=state
                break
            else:
                job=input('该职位简写不存在,请重新填写您的职位:')
      return job
   
    def Employee_grade(self,grade):
      if self.job=='E':
            while grade>10:
                grade=int(input('该职位最高级别为10,请重新录入级别:'))
      elif self.job=='T':
            while grade>6:
                grade=int(input('该职位最高级别为6,请重新录入级别:'))
      elif self.job=='M':
            while grade>3:
                grade=int(input('该职位最高级别为3,请重新录入级别:'))
      return grade
   
    def Employee_money(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
   
    def Confirm_uid(self,uid):
      if not self.record.get(uid):
            print('该工号不存在!')
      else:
            employee=self.record
            print(f'姓名:{employee}',f'职位:{employee}',f'级别:{employee}',f'工龄:{employee}',f'薪资:{employee}',sep='\n')

    def Confirm_job(self,job):
      count=0
      infor=[]
      state=['E.普通员工','T.组长','M.经理']
      if job=='E' or job=='T' or job=='M':
            if job=='E':
                zc=state
            elif job=='T':
                zc=state
            else:
                zc=state
            for k in self.record:
                if self.record==job:
                  count+=1
                  infor.append(])
            if count>0:
                print(f'目前{zc}共有{count}人')
                for i in infor:
                  print(f'{i} - {i}')
            else:
                print(f'目前公司没有{zc}!')
      else:
            print('该职位不存在。')

    def increase(self,uid):
      if not self.record.get(uid):
            print('该工号不存在!')
      else:
            employee=self.record
            print(f'{employee},',f'工号:{uid},',f'当前职位:{employee+str(employee)},',f'当前薪资:{employee}')
            t=employee
            state=['E.普通员工','T.组长','M.经理']
            on=int(input('请输入需要增加的级数:'))
            employee=on+employee
            if employee=='E':
                if employee>10:
                  employee=1
                  employee=state
            elif employee=='T':
                if employee>6:
                  employee=1
                  employee=state
            elif employee=='M':
                if employee>3:
                  employee=3
            print('升级成功!')
            employee=self.Employee_money(employee,employee,employee)
            if employee-t>0:
                print(f'{employee},',f'工号:{uid},',f'升级后职位:{employee+str(employee)},',f'升级后薪资:{employee}(+{employee-t})')
            else:
                print(f'{employee},',f'工号:{uid},',f'升级后职位:{employee+str(employee)},',f'升级后薪资:{employee}({employee-t})')
    def decrease(self,uid):
      if not self.record.get(uid):
            print('该工号不存在!')
      else:
            employee=self.record
            print(f'{employee},',f'工号:{uid},',f'当前职位:{employee+str(employee)},',f'当前薪资:{employee}')
            t=employee
            state=['E.普通员工','T.组长','M.经理']
            on=int(input('请输入需要减少的级数:'))
            employee=employee-on
            if employee=='E':
                if employee<1:
                  employee=1
            elif employee=='T':
                if employee<1:
                  employee=10
                  employee=state
            elif employee=='M':
                if employee<1:
                  employee=6
                  employee=state
            print('降级成功!')
            employee=self.Employee_money(employee,employee,employee)
            if employee-t>0:
                print(f'{employee},',f'工号:{uid},',f'降级后职位:{employee+str(employee)},',f'降级后薪资:{employee}(+{employee-t})')
            else:
                print(f'{employee},',f'工号:{uid},',f'降级后职位:{employee+str(employee)},',f'降级后薪资:{employee}({employee-t})')

      
    def get_uid(self):
      self.uid=self.js
      return self.uid
   
    def get_name(self):
      self.name=input('姓名:')
      return self.name
   
    def get_job(self):
      job=input('职位(E.普通员工;T.组长;M.经理):')
      self.job=self.Employee_job(job)
      return self.job
   
    def get_grade(self):
      grade=int(input('级别:'))
      self.grade=self.Employee_grade(grade)
      return self.grade
   
    def get_year(self):
      self.year=int(input('工龄:'))
      return self.year
   
    def salary(self):
      self.money=self.Employee_money(self.job,self.grade,self.year)
      return self.money
   
class Welcome(Employee_cl):
    def __init__(self):
      print()
      self.record={}
      self.js=10000
    def cl(self):
      ope=input('1.录入;2.查询;3.升级;4.降级;5.退出:')
      while ope!='5':
            if ope=='1':
                data=
                self.record=data
                self.js+=1
                print(f'录入成功!姓名:{self.name},工号:{self.uid},薪资:{self.money}')
                print(self.record)
            elif ope=='2':
                choice=input('1.员工查询;2.职位查询:')
                if choice=='1':
                  uid=int(input('请输入工号:'))
                  self.Confirm_uid(uid)
                elif choice=='2':
                  job=input('职位(E.普通员工;T.组长;M.经理):')
                  self.Confirm_job(job)
            elif ope=='3':
                uid=int(input('请输入工号:'))
                self.increase(uid)
            elif ope=='4':
                uid=int(input('请输入工号:'))
                self.decrease(uid)
               
               
            print()   
            ope=input('1.录入;2.查询;3.升级;4.降级;5.退出:')

def main():
    user=Welcome()
    user.cl()

艾贰亿辰 发表于 2023-7-24 07:30:35

1

paterr 发表于 2023-7-22 16:05:42

10

八神疾风 发表于 2023-7-22 15:37:02

问答题:
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:不属于,对象是一致的

刘纯良 发表于 2023-7-21 07:18:13

看看

0305 发表于 2023-7-20 18:00:16

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.

woshizhangpengp 发表于 2023-7-18 21:07:26

1

Ducklord 发表于 2023-7-17 15:34:22

class Worker:
    def __init__(self, uid, name, job, grade, year):
      self.uid = uid
      self.name = name
      self.job = job
      self.grade = grade
      self.year = year

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

class Manage():
    def __init__(self):
      self._uid = {}
      self.counts = 10000
      n = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
      while n != "5":
            if n == "1":
                self.new_worker()
            if n == "2":
                self.lookup()
            if n == "3":
                self.upgrade()
            if n == "4":
                self.downgrade()
            print()
            n = input("1.录入;2.查询;3.升级;4.降级;5.退出:")

    def new_worker(self):
      uid = self.counts
      name = input("姓名:")
      job =input("职位(E.普通员工;T.组长;M.经理):")
      year = int(input("工龄:"))
      grade = int(input("级别:"))
      while job == "E" and grade > 10:
            grade = int(input("该职位最高级别为10,请重新录入级别:"))
      while job == "T" and grade > 6:
            grade = int(input("该职位最高级别为6,请重新录入级别:"))
      while job == "M" and grade > 3:
            grade = int(input("该职位最高级别为3,请重新录入级别:"))
      new = Worker(uid, name, job, grade, year)
      self._uid = new
      self.counts += 1
      salary = new.sal()
      print(f"录入成功!姓名:{name},工号:{uid},薪资:{salary}")

    def lookup(self):
      n = input("1.员工查询;2.职位查询:")
      if n == "1":
            uid = int(input("请输入工号:"))
            if not self._uid.get(uid):
                print("该工号不存在!")
            else:
                print(f"姓名:{self._uid.name}")
                print(f"职位:{self._uid.job}")
                print(f"级别:{self._uid.grade}")
                print(f"工龄:{self._uid.year}")
                print(f"薪资:{self._uid.sal()}")
                print()
      if n == "2":
            j = input("职位(E.普通员工;T.组长;M.经理):")
            c = 0
            l = []
            for each in self._uid:
                if self._uid.job == j:
                  l.append(f"{self._uid.uid} - {self._uid.name}")
                  c += 1
            if j == "E":
                if c == 0:
                  print("目前公司没有普通员工!")
                else:
                  print(f"目前普通员工共有{len(l)}人:")
                  for x in l:
                        print(x)
            if j == "T":
                if c == 0:
                  print("目前公司没有组长!")
                else:
                  print(f"目前组长共有{len(l)}人:")
                  for x in l:
                        print(x)
            if j == "M":
                if c == 0:
                  print("目前公司没有经理!")
                else:
                  print(f"目前经理共有{len(l)}人:")
                  for x in l:
                        print(x)
                        
    def upgrade(self):
      uid = int(input("请输入工号:"))
      sal1 = self._uid.sal()
      print(f"{self._uid.name},工号:{uid},当前职位:{self._uid.job}{self._uid.grade},当前薪资:{sal1}")
      lup = int(input("请输入需要增加的级数:"))
      if self._uid.job == "E":
            if self._uid.grade + lup > 10:
                self._uid.job = "T"
                self._uid.grade = 1
            else:
                self._uid.grade = self._uid.grade + lup            
      if self._uid.job == "T":
            if self._uid.grade + lup > 6:
                self._uid.job = "M"
                self._uid.grade = 1
            else:
                self._uid.grade = self._uid.grade + lup            
      if self._uid.job == "M":
            self._uid.grade = self._uid.grade + lup
      sal2 = self._uid.sal()
      print("升级成功!")
      print(f"{self._uid.name},工号:{uid},升级后职位:{self._uid.job}{self._uid.grade},升级后薪资:{sal2}({sal2 - sal1})")
      
    def downgrade(self):
      uid = int(input("请输入工号:"))
      sal1 = self._uid.sal()
      print(f"{self._uid.name},工号:{uid},当前职位:{self._uid.job}{self._uid.grade},当前薪资:{sal1}")
      ldown = int(input("请输入需要减少的级数:"))
      if self._uid.job == "E":
            self._uid.grade = self._uid.grade - ldown            
      if self._uid.job == "T":
            if self._uid.grade - ldown < 1:
                self._uid.job = "E"
                self._uid.grade = 10
            else:
                self._uid.grade = self._uid.grade - ldown            
      if self._uid.job == "M":
            if self._uid.grade - ldown < 1:
                self._uid.job = "T"
                self._uid.grade = 6
            else:
                self._uid.grade = self._uid.grade - ldown
      sal2 = self._uid.sal()
      print("降级成功!")
      print(f"{self._uid.name},工号:{uid},降级后职位:{self._uid.job}{self._uid.grade},降级后薪资:{sal2}({sal2 - sal1})")
页: 23 24 25 26 27 28 29 30 31 32 [33] 34 35 36 37 38 39 40 41 42
查看完整版本: 第063讲:类和对象(VI)| 课后测试题及答案