Python期末复习题:面向对象

Python期末复习题:面向对象

一、编写银行员工类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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-北天-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值