面向对象
一、 创建一个父类Schoolmember,代表学校成员 创建一个老师的子类Teacher继承父类,实例化时候赋予老师姓名(name)、年龄(age)、和薪水(salary) 创建一个学生的子类Student继承父类,实例化时候赋予学生姓名(name)、年龄(age)、和性别(sex) Teacher类有一个方法打印出老师的姓名和年龄还有薪水 Student类有一个方法打印出学生的姓名和年龄还有性别 请用继承的思想来写出实例化的代码逻辑和方法的代码逻辑 (提示:相同的部分可以提出来放在父类里面,不同的部分在子类完成) 二、 1、定义一个用户类,定义注册用户的方法。执行方法,让用户输入用户名和密码 如果文件中存在该用户,提示用户已存在,继续让用户输入 如果用户不存在,则生成如下格式的字典,保存在文件里面 例如{ "用户名":{"密码":"123",'状态':False,'锁定时间': 9:38:10} } { "egon":{"password":"123",'status':False,'timeout':0}, } 每注册一个人在字典里面添加多一个用户字典。状态默认为False,锁定时间默认为0 { "egon":{"password":"123",'status':False,'timeout':0}, "alex":{"password":"456",'status':False,'timeout':0}, } 然后把字典信息写入文本中(利用json) 2、定义一个对象的方法db,例如 执行obj.db(把方法当做属性调用)可以拿到用户数据结构 3、定义一个登录方法, 用户输入用户名和密码,如果用户名和密码都正确,登录成功,将该用户状态(status)修改为True, 如果用户名错误一直让该用户输入。 如果用户名正确,密码错误,则继续输入,直到密码错误次数达到三次将为该用户设置锁定时间(锁定时间为20s,即20s之内不允许登录,提示锁定状态。 20s之后才能登录).
-----------------------答案-------------------------------
一、 class SchoolMember(): def __init__(self, name, age): self.name = name self.age = age def get_info(self): print(self.name, self.age) class Teacher(SchoolMember): def __init__(self, name, age, salary): super().__init__(name, age) self.salary = salary def get_info(self): super().get_info() print(self.salary) class Student(SchoolMember): def __init__(self, name, age, sex): super().__init__(name, age) self.sex = sex def get_info(self): super().get_info() print(self.sex) t = Teacher('ben', 20, 7000) t.get_info() 二、 import json,time class User(): def register(self): data = self.db while 1: username = input('请输入用户名>>:') password = input('请输入密码>>:') if username in data: print('用户名已存在') else: data[username] = {'password':password, 'status':False, 'timeout':0} self.write_data(data) print('注册成功') break @property def db(self): with open('a.txt', 'r') as f: data = f.read() if data: data = json.loads(data) else: data = {} return data def write_data(self, data): with open('a.txt', 'w') as f: json.dump(data, f) def login(self): num = 0 while 1: username = input('请输入用户名>>:') password = input('请输入密码>>:') data = self.db if username in data: if time.time() - data[username]['timeout'] > 20: if data[username]['password'] == password: print('登录成功!') data[username]['status'] = True self.write_data(data) break else: num += 1 if num == 3: print('密码次数以达到3次,锁定20s') data[username]['timeout'] = time.time() self.write_data(data) break else: print('密码错误%s次'%num) else: print('用户在锁定状态中,20s之后再登录') break else: print('用户名错误') u = User() # print(u.db) # u.register() u.login()