解题思路:
实现登录和注册,首先需要建立一个文件,这个文件中保存着账户和密码,然后:
- 判断账号:定义一个函数,用于用户注册时检查用户名是否被占用,此时不需要对密码进行判断,可以打开存储文件将账号全部提取,用于注册时判断,下面程序选择用字典储存.
- 判断密码:此时输入注册密码,然后对密码是否和法进行判断,然后再次输入密码判断;两次输入的密码是否相同,然后定义函数对注册无误的账号密码写入到存储文件中保存.
- 登录验证:登录前输入账号和密码时需要对账号密码进行验证,此时需要定义一个函数,打开存储文件进行验证,当输入的账号和密码匹配,则登录成功
- 登录次数:登录次数不超过3次,此时在for循环或者while循环中控制登录次数即可.
def get_username(): #定义一个函数用于后续用户名查重 user = {} with open("user_info", mode="r", encoding="utf-8") as f: for line in f: if line == "": continue else: user_info_username, password = line.strip().split("_") user[user_info_username] = password return user def regist(username,password): #定义一个函数用于写入你的注册名和密码 with open("user_info", mode="a", encoding="utf-8") as f: f.write(username + "_" + password + " ") while 1: name = input("请输入您的注册名:").replace(" ", "") if name in get_username(): print("您的注册名已占用,请重新注册") elif "_" in name or "*" in name: print("注册名不能含有%s和%s:" % ("_", "*")) else: while 1 : pwd1= input("请输入您的注册密码:") if "_" in pwd1 or pwd1.isdigit() or len(pwd1)<6: print("密码必须大于6位,不能是纯数字,不能包含_") continue else: pwd2 =input("请再次输入您的注册密码:") if pwd1 == pwd2: print("恭喜注册成功,您的账号密码为%s_%s" % (name, pwd1)) regist(name, pwd1) break else: print("您两次输入的密码不一致请重新输入:") continue break def login(username,password): #定义一个函数用于校验你输入的账号和密码 with open("user_info",mode="r",encoding="utf-8") as f: for line in f: if line.strip()== username+"_"+password: return True else: return False print("请进行登录") for i in range(2,-1,-1): ret =login(input("请输入用户名:"),input("请输入密码:")) if ret: print("恭喜您登陆成功") break else: print("用户名或密码错误,还有%s次机会" %i)
当用面向对象和文件操作编写这个题目
import pickle class User: def __init__(self,name,pwd): self.name = name self.pwd = pwd class Document: def __init__(self,file_name): self.file_name = file_name def Write(self,lst): with open(self.file_name,mode = "wb") as f: pickle.dump(lst,f) def Read(self): with open(self.file_name,mode = "rb") as f: lst = pickle.load(f) return lst class Account: def __init__(self): pass def register(self): print("请注册账号和密码") name,pwd = input("请输入注册名"),input("请输入密码") u = User(name,pwd) f=Document("user_info11") lst = f.Read() for el in lst: if el.name == u.name: print("您输入的注册名已被占用,请重新输入") break else: lst.append(u) f.Write(lst) def login(self): for i in range(2,-1,-1): print("请用您的账号和密码进行登录") username,password = input("请输入您的用户名"),input("请输入您的密码") f = Document("user_info11") lst = f.Read() for el in lst: if username == el.name and password == el.pwd: return True else: print("登录失败,你还有%s次登录机会" % i) def run(self): while 1 : print("1:注册 2:登录 3:退出") num = int(input("请输入你要执行的操作:")) if num ==1: self.register() elif num ==2: if self.login(): print("登录成功,欢迎进入") else: print("登录失败") elif num ==3: print("程序退出中.....") break else: print("你到底想干哈?") lst = [User("张无忌",123),User("张三丰",456),User("成昆",789)] #首先在文件中创建一些账号信息 f = Document("user_info11") f.Write(lst) obj = Account() obj.run()