标题:用Python写一个用户登录认证程序
1.要求:
用户输入帐号密码进行登陆
用户账号信息保存在文件内
用户密码输入错误三次后锁定,用户下次再登录,检测到是这个被锁定的用户,则依然不允许其登录,提示已被锁
2.操作:
(1)先创建一个python文件
accounts={
'tfh':'tfh','abc12345','o'
}
f.open('用户登录认证文件','r+','encoding='utf-8') # ‘r+’的模式是‘read’和‘write’也就是读和写的模式
for line in f:
line=line.strip().split('') # 用逗号隔开
accounts[line[0]]=line
print(accounts)
```![在这里插入图片描述](https://img-blog.csdnimg.cn/3bccace1f1a74c9a8e2d097d747ef753.png#pic_center)
效果如图所示
(2)接着上面的写
while True:
user=input('username:').strip()
if user not in accounts:
print('用户没有注册,请注册.........')
continue # 跳过这个用户,继续下面的程序
elif accounts[user][2]=='1': # 当账号的转态为1是,表示此账号已经被锁定
print('账号已经锁定,请联系管理员......')
continue
count=0
while count < 3:
password = input('请输入你的密码:').strip()
if password ==accounts[user][1]:
print(f'wellcome:{user}.......登录成功......')
exit('byb....')
else:
print('Wrong password.......')
count+=1
if count==3:
print(f'输错了{count}次密码,需要锁定账号{user}')
# 1.先改内存中的dict账号信息的用户状态
# 2.把dict里的数据转为原accounts的数据格式,并且存回文件
accounts[user][2]=='1' # 一定要用‘’来包住状态1,因为存入内存的只能是字符块,而不是int
f.seek(0) # 截取到0的位置,那么也就是文件的全部内容
f.truncate() # 截断文件内容,从截取的位置开始,之后的数据都会被清空
for user,var in accounts.items():
line = ','.join(var)
f.write(line) # 将新的数据写进内存
f.close()
3.最终实现效果图
![在这里插入图片描述](https://img-blog.csdnimg.cn/c0b6cd47bf154be9998f79ec81fd84c7.png#pic_center)
4.同时查看文件的账号状态是否被修改
![在这里插入图片描述](https://img-blog.csdnimg.cn/98a5403383a0428cb4adf557146134bf.png#pic_center)
OK
这个程序就写完了哈
**总代码如下:**
![在这里插入图片描述](https://img-blog.csdnimg.cn/98b07775f73f47be8a6cf3bcfda1eb3d.png#pic_center)
谢谢观看