登录模块优化方案
来源:互联网 发布:java三大框架的作用 编辑:程序博客网 时间:2024/05/21 23:32
问题
1.采用\n分割账户和密码后在读取时strip("\n")多次调用是否浪费
2.用readline调用读取txt文件从头读到尾,同时每次都会运用if判断即使判断到对的也会继续判断下去直到读取完所有的。
fp=open("f:\\alluser.txt")ban=open("f:\\banuser.txt","r+")#获取被ban的用户flag=0;#判断登录状态0登录失败 2账户锁定 3登录成功username = input("username:")password = input("password:")while 1: ban_user = ban.readline() ban_user = ban_user.strip("\n") if ban_user == username : flag = 2 break if ban_user == "": breakif flag != 2 : while 1:#读取用户民和密码 temp_username = fp.readline() temp_username = temp_username.strip("\n") temp_password = fp.readline() temp_password = temp_password.strip("\n") if temp_username == username and temp_password == password: flag = 3 break elif temp_username == username and temp_password != password: for i in range(0,2): print("对不起密码错误,您还有" + str(2 - i) + "次可以尝试") password = input("password:") if(temp_password == password): flag == 3 elif flag != 3 and i == 1: print("this is ban") flag = 2 ban.write(username+"\n") ban.close() break else: flag = 0if flag == 0: return "none"elif flag == 2: return "lock"elif flag == 3: return username
解决方案:
1.在读取时候采用split将字符串转化为数组。
2.那么在数组奇数位的为账户名,偶数位为密码
3.利用for i in 数组的方法循环遍历,隔一个遍历取一位直到找到与用户输入相同的用户名,那么下一位就是密码,这样就取到了用户名和密码,同时跳出循环。
4.对用户名密码进行判断。(方便进行限制同时调理更清晰)
5.这样真的效率更高吗?有待验证。。。。。。。。。
fp=open("f:\\alluser.txt")ban=open("f:\\banuser.txt","r+")#获取被ban的用户flag=0;#判断登录状态0登录失败 2账户锁定 3登录成功ban_str = ban.read()ban_list = ban_str.split(",")fp_str = fp.read()fp_list = fp_str.split(",")username = input("username:")password = input("password:")temp_username = ""temp_password = ""for i in range(0,len(ban_list)):#查询账户是否被ban if(username == ban_list[i]): flag = 2 breakfor i in range(0,len(fp_list[i])-2,2):#查询用户名和密码 if(username == fp_list[i]): temp_username = username temp_password = fp_list[i+1]if temp_username !="" and flag !=2: for i in range(3):#从0开始循环两次 if password == temp_password: flag = 3 break elif i == 2:#这里的作用是当i==2时截断循环因为已经没有输入机会了上面的判断是判断上一次的结果 break else: print("对不起密码错误,您还有"+str(2-i)+"次可以尝试") password = input("password:") if i==2 and flag != 3:#在48行已经判断过temp_username!=""所以这里不可能是用户名为空 flag = 2 ban.write(username+",")if flag == 0: return "none"elif flag == 2: return "lock"elif flag == 3: return username
阅读全文
0 0
- 登录模块优化方案
- 登录模块
- 登录模块
- 登录模块
- 网络模块优化方案(1)——封装网络框架
- DELPHI用户登录方案
- DELPHI用户登录方案
- DELPHI用户登录方案
- 单点登录方案
- app登录注册方案
- app登录注册方案
- webmagic模拟登录方案
- 前端优化方案-CSS 优化方案
- 前端优化方案-JavaScript 优化方案
- 前端优化方案-JavaScript 优化方案
- 前端优化方案-JavaScript 优化方案
- jsp登录模块代码
- 简单的登录模块
- Cornerstone 忽略文件、文件夹(类似.ignore)
- Unity 5 中的全局光照技术详解
- C与指针课后练习与编程答案(不断更新)
- Linux系统知识小结(六)
- 猜数字游戏
- 登录模块优化方案
- 个人前端知识总结
- javascript分号存在意义
- Microsoft.SqlServer.SmoExtended
- Ubuntu 17.04下安装64位谷歌Chrome浏览器
- Activity生命周期梳理
- MODBUS通讯协议及编程【一】
- 我的学习记录15
- HibernateOrm元素配置