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