python实现简单登陆系统
更新时间:2018年10月18日 08:33:30 作者:zerolouise
这篇文章主要为大家详细介绍了python实现简单登陆系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
新手,虽然比较简单的东西,但是弄了我很久。
很多不完善的地方,比如锁定用户,同一用户输入错三次密码就会锁定,但是如果在第二第三次换了用户再输入原来的用户,则计数会重新计算。
另外不存在的用户输入密码错误次数过多也会被锁定,然后还能创建一个被锁定的用户,这个就不搞了,只要检测一下是否存在用户名就可以了。
暂时想到了解决办法是在一个专用的文件里面增加一个专用的计数变量,舍弃blocklist这个文件,但是不懂怎么操作,先留着。
虽然python没有像C一样的main函数作为程序入口,姑且弄了一个,方便看懂
'''登陆系统 要求: 1、可以选择创建新的用户 2、可以登陆原有的用户 3、输入密码错误三次后用户则被锁定''' flag=True #循环控制符 def createuser(): f=open('userlist.txt','r')#打开已存在用户的文件,假设文件已经存在 flag=True name=f.readlines() f.close() while flag: username=input('username:') flag2=False#用户名已存在的标记符 for line in name: if(username==line.split('*')[0]): flag2=True print("用户名已存在,请重新输入") if flag2!=True: f=open('userlist.txt','a')#创建新的用户 f.write('\n'+username) f.write('*') password=input('password:') f.write(password) f.close() break main() def login():#登入函数,输入密码错误三次则锁定用户 count=0#密码错误计数,3次则锁定 f=open('userlist.txt','r') info=f.readlines() f.close() user=None#重复用户标记符 while flag: flag2=False f2=open('blocklist.txt', 'r') block_name=f2.readlines() f2.close() username=input('username:') if user==None:#user没有使用过,则直接赋予输入的用户名 user=username elif user!=username:#如果下一次输入的用户名不一样,则记录上一次的用户名,同时计数清零 user=username count=0; for line in block_name:#检查用户名是否被锁定,锁定则返回主菜单 if username==line.strip('\n'): print('该用户已经被锁定,请联系管理员') main() password=input('password:') for line in info: if(username==line.split('*')[0]and password==line.split('*')[1].strip('\n')): print('登入成功!') flag2=True if flag2==False: count+=1 print("用户名或密码错误,请重新输入") if count==3:#错误三次,把用户名添加到锁定列表中 print('密码错误次数过多,该用户已被锁定') f3=open('blocklist.txt','a') f3.write('\n'+username) f3.close() count=0#加入黑名单后重置计数 main()#加入黑名单后退回主菜单 info=''' ------请输入相关数字----- 1.创建新的用户 2.登陆已有用户 3.退出程序 ''' def main(): print(info) while flag: i=input() if i=='1': createuser() break elif i=='2': login() break elif i=='3': exit() else: print("请输入正确的数字.") main()#程序入口
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
浅谈pytorch中为什么要用 zero_grad() 将梯度清零
这篇文章主要介绍了pytorch中为什么要用 zero_grad() 将梯度清零的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-05-05python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
这篇文章主要介绍了python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-07-07Windows平台Python连接sqlite3数据库的方法分析
这篇文章主要介绍了Windows平台Python连接sqlite3数据库的方法,结合实例形式分析了Windows平台安装SQLite数据库及创建、连接数据库的实现方法与相关注意事项,需要的朋友可以参考下2017-07-07
最新评论