完成如下用户注册/登陆功能,首页示例如下:
```
******************************
操作编码 操作
[0] 注册
[1] 登录
******************************
请输入你要进行的操作编码:
```
一、注册模块具体要求:
(1)提示用户输入,用户名和密码,其中密码需要输入 2 次。
> 提示用户名只能为字母、下划线和数字;密码不能超过 8 位,密码只能为数字
或大小写字母
(2)注册成功后,账户密码记录在文件中 (user.txt)
> 内容格式可以为
姓名:密码
(3)用户名不能重复。输入用户名重复,需要提示用户重新输入,示例如下:
```
--------------注册--------------
请输入用户名:abc
用户名已存在
请重新输入用户名:
```
(4)检测两次密码如果不同,提示两次密码不一致,检测两次密码如果相同,确认注
册成功,示例如下:
```
--------------注册--------------
请输入用户名:abc
请输入密码:123456
请再次输入密码:654321
密码不一致
请再次输入密码:
```
二、
登陆模块具体要求:
(1)用户登录时,进行三次校验,都不对,记录黑名单,并保存在文件中:blacklist.txt
```
--------------登陆--------------
请输入用户名:abc
请输入密码:123456
密码不正确
请再次输入密码:654321
密码不正确
您还有 1 次机会
请再次输入密码:987654
密码 3 次错误,禁止登陆,请联系管理员。
```
(2)如果是黑名单的用户,则禁止再次登录。
import os
import re
# 用户类,用于存储用户名和密码
class User:
def __init__(self, username, password):
self.username = username
self.password = password
# 注册功能
def register():
while True:
username = input("请输入用户名(只能包含字母、数字和下划线,且不能以数字开头):")
if re.match("^[a-zA-Z_][a-zA-Z0-9_]*$", username):
with open('user.txt', 'r') as f:
if username in f.read().splitlines():
print("用户名已存在,请重新输入!")
else:
break
else:
print("用户名格式错误,请重新输入!")
while True:
password = input("请输入密码(必须包含至少一个数字,一个大写字母,一个小写字母,且长度在8位以上):")
if re.match("^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$", password):
break
else:
print("密码格式错误,请重新输入!")
confirm_password = input("请再次输入密码:")
if password == confirm_password:
user = User(username, password)
with open('user.txt', 'a') as f:
f.write(f"{user.username}:{user.password}\n")
print("注册成功!")
# 登录功能
def login():
with open('blacklist.txt', 'r') as f:
blacklist = set(f.read().splitlines())
username = input("请输入用户名:")
password = input("请输入密码:")
if username in blacklist:
print("您已经被禁止登录。")
else:
with open('user.txt', 'r') as f:
users = {line.split(":")[0]: line.split(":")[1] for line in f.readlines()}
if username in users and users[username] == password:
print("登录成功!")
else:
print("密码错误,您还有2次机会。")
login() # 递归调用,实现3次输入检查
if username in blacklist:
print("密码3次错误,禁止登录,请联系管理员。")
with open('blacklist.txt', 'a') as f:
f.write(f"{username}\n")
# 主函数,根据用户的选择进行注册或登录操作
def main():
while True:
print("******************************")
print("操作编码 操作")
print("[0] 注册")
print("[1] 登录")
print("******************************")
choice = input("请输入你要进行的操作编码:")
if choice == '0':
register()
elif choice == '1':
login()
else:
print("无效的操作编码,请重新输入。")
continue
break # 注册或登录后跳出循环,结束程序运行
if __name__ == "__main__":
main()