我想当第一

本节内容:

模拟注册登录功能
_’’’
a模式 append 追加模式
1:文件不存在则创建
2:文件如果存在则打开(和w模式的区别:a模式打开不会清空内容)
3:文件的指针在最后
‘’’

_

__#实现功能
# 注册功能:
# 1:需要用户名,密码以及确认密码
# 2:注册时,若用户名已存在,则不能再注册
# 登录功能:
# 1:需要使用已经注册的信息登录
# 2:密码错误三次则锁定,不能再使用该账号登录

存放信息的列表
userlist = [] #存放用户名列表
pwdlist = [] #存放密码列表
blacklist = [] #黑名单列表

读取所有用户列表信息
# 使用a+模式打开,再调整文件指针,防止文件不存在报错
def readallusers():
with open(‘./test/1.txt’,‘a+’,encoding=‘utf-8’) as fp:
fp.seek(0)
#调整当前的指针到文件头部
res = fp.readlines()#按照每一行读取所有的用户数据
for i in res:#循环读取每一行数据
# 处理每一行数据:strip()函数可以去除左右存在的指定字符,不指定则为空格
r = i.strip() #此处:admin:123\n==>admin:123
arr = r.split(‘:’)#admin:123==>[‘admin’,’123’]
userlist.append(arr[0])#把用户名追加到用户名列表
pwdlist.append(arr[1])#把用户名密码追加到密码列表

  1. #获取所有黑名单用户<br /> _**with **open(**'./test/black.txt'**,**'a+'**,encoding=**'utf-8'**) **as **fp:<br /> fp.seek(0) _#调整当前的指针到文件头部<br /> _res = fp.readlines() _#按照每一行读取所有的用户数据<br /> _**for **i **in **res:<br /> blacklist.append(i.strip())

#注册函数
def register():
#循环执行用户名输入操作
while True:
#输入用户名
_username = input(‘欢迎注册!请输入用户名:’)
#用户名需要检测是否存在
if username in userlist:
print(‘当前用户名已经存在,请更换用户名’)
else:
#循环输入密码,如果都正确就退出循环
while True:
#输入密码
pwd = input(‘请输入密码:’)
#检测密码长度
if len(pwd) > 2:
#输入确认密码
repwd = input(‘请输入确认密码:’)
#检测密码是否一致
if pwd == repwd:
#用户名和密码都正确,就写入文件 用户名:密码
#写入数据
_with open(‘./test/1.txt’,‘a+’,encoding=‘utf-8’) as fp:
fp.write(f’{username}:{pwd}\n’)
print(f’注册成功! 用户名:{username}’)
return
else
:
print(‘两次密码不一致,请重新输入!’)
else:
print(‘密码格式不正确’)

#登录函数
def login():
isLogin = True
#定义变量,统计输入密码错误的次数
_errornum = 3
while isLogin:
username = input(‘请输入用户名:’)
#检测当前用户是否存在
if username in userlist:
#检测用户是否处于锁定状态
if username in blacklist:
print(‘你的账户已被锁定.请练习管理员’)
else:
while True:
inx = userlist.index(username)
pwd = input(‘请输入密码:’)
if pwd == pwdlist[inx]:
print(‘登录成功!’)
isLogin = False
break
else
:
errornum -= 1
if errornum == 0:
print(‘给你三次机会你不中用啊!账户锁定成功!!!’)
#如何锁定账户信息? 写一个锁定的用户列表
with open(‘./test/black.txt’,‘a+’,encoding=‘utf-8’) as fp:
fp.write(username+‘\n’)
isLogin = False
break
else
:
print(f’密码错误,请重新输入,你还有{errornum}次机会’)
#用户名不存在
_else:
print(‘输入用户名不存在,请重新输入’)

#合并注册登录功能
if name == main:
_# 这里的代码,只有在使用python解释器直接运行时才执行
#如果当前的脚本,作为一个模块被其他的文件导入后使用,那么这个地方的代码不会执行
#因此这个地方的代码,适合写当前脚本中的一些测试,这样不会影响其它脚本
# 调用初始化方法
_readallusers()
while True:

  1. vars = **'''<br /> *********************<br /> <br /> **注册(0) 登录(1) 退出(任意键)**<br /> <br /> *********************<br /> '''<br /> **print(vars)
  2. _#让用户选择对于的操作<br /> _num = input(**'请输入对应的序号,体验功能!\n'**)<br /> **if **num == **'1'**:<br /> login()
  3. **elif **num == **'0'**:<br /> register()<br /> **else**:<br /> print(**'欢迎下次光临!'**)<br /> **break**