初涉python,用户登录功能
来源:互联网 发布:网络部招新面试问题 编辑:程序博客网 时间:2024/06/06 01:58
前段时间,部门组织学习python,然后群内突然出现了一份“家庭作业”的公告,内容为:
1、-输入用户名密码
2、-认证成功后显示欢迎信息
3、-输错三次后锁定
刚看到这个的时候,我内心是崩溃的,作为没有任何代码基础的我,一脸懵逼的看着电脑屏幕,不知从何下手,然后我就开始了漫长的百度生涯,经过不懈努力之后,版本V1.0终于诞生辣,代码如下:
#coding:utf-8username = 'chenhao'password = '123456'user_input = raw_input("请输入用户名:")pass_input = raw_input("请输入密码:")if user_input == username and pass_input == password: print "登陆成功!"else: print "登陆失败!"
执行结果 - 成功:
请输入用户名:chenhao请输入密码:123456登陆成功!
执行结果 - 失败:
请输入用户名:123请输入密码:123登陆失败!
以上,版本V1.0仅仅是实现了“输入用户名、密码,认证成功后显示欢迎信息”的功能,并没有输入三次错误锁定的判断,这个时候输错一次密码,就退出程序了,于是我又开始继续百度----------------------------------------------------------------------------版本分割线---------------------------------------------------------------------
版本V2.0
#coding:utf-8 username = 'chenhao' password = '123456' for i in range(3): user_input = raw_input("请输入用户名:") pass_input = raw_input("请输入密码:") if username == user_input and password == pass_input: print "登陆成功!" break else: print "登陆失败!"
执行结果 - 成功:
请输入用户名:chenhao请输入密码:123456登陆成功!
执行结果 - 失败:
请输入用户名:123请输入密码:123登陆失败!请输入用户名:123请输入密码:abc登陆失败!请输入用户名:123请输入密码:456登陆失败!
以上:版本V2.0与V1.0相比,增加了一个for循环的判断,允许用户有3次输错密码的机会,但是与我们作业的最终要求还差了一点
----------------------------------------------------------------------------版本分割线---------------------------------------------------------------------
版本V3.0:
#coding:utf-8username = 'chenhao' password = '123456' xunhuancishu = 0 f = open('black_user.txt','r') black = f.read() f.close()user_input = raw_input('请输入用户名:') for i in range(1): if user_input in black: print "你的用户已被锁定" exit() else: continuefor i in range(3): pass_input = raw_input('请输入密码:') if username == user_input and password == pass_input: print "登陆成功" break else: print "用户名或密码输入错误,当前输入错误次数为",xunhuancishu+1,",共计输入错误3次,将锁定用户" xunhuancishu += 1 if xunhuancishu == 3: print "对不起,用户名或密码已错误3次,将锁定用户" f = open('black_user.txt','a') f.write(user_input) f.close()执行结果 - 成功:
请输入用户名:chenhao请输入密码:123456登陆成功
执行结果 - 失败:
请输入用户名:abc请输入密码:123用户名或密码输入错误,当前输入错误次数为 1 ,共计输入错误3次,将锁定用户请输入密码:456用户名或密码输入错误,当前输入错误次数为 2 ,共计输入错误3次,将锁定用户请输入密码:789用户名或密码输入错误,当前输入错误次数为 3 ,共计输入错误3次,将锁定用户对不起,用户名或密码已错误3次,将锁定用户
执行结果 - 锁定:
请输入用户名:abc你的用户已被锁定
以上,可以看出版本V3.0,比V2.0多出了16行代码,功能已经比较完善了,这里我使用了一个txt文件作为黑名单来记录被锁定的用户名,然后在用户输入用户名的开始读取这个黑名单,如果发现黑名单中有这个用户,则直接锁定,不给予输入密码的机会;不仅实现了输错三次锁定的功能,并且在提示语方面也进行了优化,在输错密码时,会提示剩余尝试次数,但经过测试,发现其实版本V3.0还存在着bugbug:当输入的新用户名包含于黑名单中的用户名时,也会被锁定,例如我之前被锁定的其实是“123”这个用户,但在我下次输入另一个用户名“12”的时候,“12”也被锁定了,但其实这两个用户是独立的两个用户,并没有关联,这样是不可以的思考 + 百度后,在版本V4.0解决了这个bug------------------------------------------------版本分割线-------------------------------------------------------------版本V4.0:#coding:utf-8username = 'chenhao' password = '123456' xunhuancishu = 0 f = open('black_user.txt','r') black = f.read().splitlines() f.close()user_input = raw_input('请输入用户名:') for i in range(1): if user_input in black: print "你的用户已被锁定" exit() else: continuefor i in range(3): pass_input = raw_input('请输入密码:') if username == user_input and password == pass_input: print "登陆成功" break else: print "用户名或密码输入错误,当前输入错误次数为",xunhuancishu+1,",共计输入错误3次,将锁定用户" xunhuancishu += 1 if xunhuancishu == 3: print "对不起,用户名或密码已错误3次,将锁定用户" f = open('black_user.txt','a') f.write(user_input + '\n') f.close()
执行结果 - 成功:
请输入用户名:chenhao请输入密码:123456登陆成功
执行结果 - 失败:
请输入用户名:abc请输入密码:123用户名或密码输入错误,当前输入错误次数为 1 ,共计输入错误3次,将锁定用户请输入密码:456用户名或密码输入错误,当前输入错误次数为 2 ,共计输入错误3次,将锁定用户请输入密码:789用户名或密码输入错误,当前输入错误次数为 3 ,共计输入错误3次,将锁定用户对不起,用户名或密码已错误3次,将锁定用户
执行结果 - 锁定:
请输入用户名:abc你的用户已被锁定
以上,版本V4.0的代码,大致上和V3.0没有什么区别,唯一的区别在读取黑名单的时候,加了一个以数组的形式进行读取,并且在写入的时候,将每次写入的数据进行换行,这样可以保证每次读取到的数据之间,不会存在重叠的情况,从而解决版本V3.0的bug功能比较简单,目前此次作业的最终版本就是V4.0,已经上交,因为之前完全没有代码基础,上面这些也都是我一边百度,一边问同事的,也许还有一些我没有发现的问题,以及代码风格啥的有不妥之处请见谅,希望能给同样没有代码基础,且初涉python的小伙伴一点帮助
0 0
- 初涉python,用户登录功能
- ajax 用户 登录 功能
- 模拟用户登录功能
- 用户免登录功能
- Python 用户登录练习
- python--用户登录
- Python爬虫登录功能
- 用户限制登录的功能
- PHP用户登录功能实现
- 用户的退出登录功能
- 用户登录和注册功能
- QT实现用户登录功能
- 模拟用户登录的功能
- SQLite实现用户登录功能
- 9.用户模块:用户登录功能
- python-用户登录小程序
- python实现用户登录限制
- python初步编写用户登录
- Android6.0手机权限处理工具类
- ElementUI案例演示:导航、布局、加载动画
- 如何在Android智能手机上捕获数据包?
- socket编程之addrinfo结构体与getaddrinfo函数
- 占楼
- 初涉python,用户登录功能
- MyBatis入门——动态SQL
- 工作中常常使用的几种加密以及签名的方式:Base64
- iOS UITabelView 头视图跟随移动的设置
- Qt实现网络数据传输(POST)
- 感知机的对偶形式实现java版
- 编写junit单元测试
- 《C++ Primer》 shared_ptr章节示例小程序:文本文件单词搜索程序 V2.0
- block内放置weakSelf被提前释放