Python期末复习题:面向对象

Python期末复习题:面向对象

文章目录

  • Python期末复习题:面向对象
    • 一、编写银行员工类BankEmployee
    • 二、编写一个银行柜员类BankTeller

一、编写银行员工类BankEmployee

编写银行员工类BankEmployee,要求:1.银行员工类的属性包括姓名name,工号num,工资salary

2.姓名name和工号num设置为私有属性,并将salay设置为默认参数3000。

测试输入:张飞

007

预期输出:

张飞领到这个月工资3000

请根据上述测试数据的输入输出情况,完善下面的代码:

class BankEmployee():

 #        请在此处添加代码         #

 # *************begin************#





 # **************end*************#



def main():

    name = input()

    num = input()

    bankemployee = BankEmployee(name,num)

    bankemployee.get_salary()



if __name__=="__main__":

    main()
class BankEmployee():
    def __init__(self, name, num):
        self.__name = name
        self.__num = num
        self.salary = 3000
        
    def get_salary(self):
        print(f"{self.__name}领到这个月工资{self.salary}")

def main():

    name = input()

    num = input()

    bankemployee = BankEmployee(name,num)

    bankemployee.get_salary()



if __name__=="__main__":

    main()

运行的结果是:

张飞
007
张飞领到这个月工资3000

二、编写一个银行柜员类BankTeller

在完成第1题的基础上,编写一个银行柜员类BankTeller,继承BankEmployee类,要求:

1.完善BankEmployee类,对私有属性name和num添加set方法和get方法以实现对私有属性的设置和获取

2.对工号的合法性进行检验,要求工号以字母s开头,如s678是合法工号,678不是合法工号

3.继承BankEmployee类,定义银行柜员类BankTeller类,其name属性和num属性和父类BankEmployee类相同,属性salary默认参数为2000.

测试输入:

张飞

007

预期输出:

工号以s开头

张飞领到这个月工资2000

工号以s开头

张飞 None

测试输入:

赵云

s009

预期输出:

赵云领到这个月工资2000

赵云 s009

请根据上述测试数据,完善下述程序代码:

class BankEmployee():

    def __init__(self,name="",num="",salary=2000): 

        self.__name = name

        self.__num = num

        self.salary = salary

    def get_salary(self): #定义领工资方法get_salary()

        print("%s领到这个月工资%d"%(self.__name,self.salary))

    # 请在此处添加代码对name和num设置set/get方法 #

     # *************   begin   ************#

   

     # **************  end   *************#



  

class BankTeller(BankEmployee):

 #        请在此处添加代码         #

 # *************begin************#



             

 # **************end*************#

        

def main():

    bankteller = BankTeller()

    name = input()

    num = input()

    bankteller.set_name(name)

    bankteller.set_num(num)

    bankteller.get_salary()

    print(bankteller.get_name(),bankteller.get_num())

    

if __name__=="__main__":

    main()

class BankEmployee():

    def __init__(self,name="",num="",salary=2000): 

        self.__name = name

        self.__num = num

        self.salary = salary

    def get_salary(self): #定义领工资方法get_salary()

        print("%s领到这个月工资%d"%(self.__name,self.salary))

    def get_name(self):
        return self.__name
    
    def set_name(self, name):
        self.__name = name
        
    def get_num(self):
        return self.__num
    
    def set_num(self, num):
        self.__num = num


class BankTeller(BankEmployee):
    def set_num(self, num):
        if num[0] != 's':
            print("工号以s开头")
            self.__num = ''
        else:
            self.__num = num
    
    def get_num(self):
        if self.__num == '' or self.__num[0] != 's':
            print("工号以s开头")
            return None
        return self.__num
        

def main():

    bankteller = BankTeller()

    name = input()

    num = input()

    bankteller.set_name(name)

    bankteller.set_num(num)

    bankteller.get_salary()

    print(bankteller.get_name(),bankteller.get_num())

    

if __name__=="__main__":

    main()

运行的结果是:

张飞
007
工号以s开头
张飞领到这个月工资2000
工号以s开头
张飞 None

赵云
s009
赵云领到这个月工资2000
赵云 s009

你可能感兴趣的:(Python每日一练,Python编程基础,python,开发语言)