1.程序目标

输入用户名密码

认证成功后显示欢迎信息

输错三次后锁定

2.思路

利用python中的pickle模块,实现用户登录信息(采用dict)和被锁定用户信息(采用list)的存储。所以我预先存储了一些用户信息和被锁定用户信息在两个.pkl文件里面。

输入用户名后先判断是否在锁定用户的list里面,如果在直接print账户被锁定。若不在,则判断账户密码是否有效。

3.程序实现

 import pickle    #导入pickle模块
pickle_file=open('userandcodes.pkl','rb')
userdict=pickle.load(pickle_file) #打开存储用户密码和账户的文件,并把里面的字典类型给userdict
pickle_file.close() pickle_file1=open('userlock.pkl','rb')
locklist=pickle.load(pickle_file1) #打开被锁定用户的文件,并把里面的列表类型给locklist count=0
while count<3:
username = input('username:')
while username not in userdict.keys():
print('Wrong Username,input again!') #检测用户名是否存在,直至用户输入正确的用户名(输错用户名不被计数)
username = input('username:')
password = input('password:')
if username not in locklist:
if password==userdict.get(username):
print('Welcome!.The user {0} loging...'.format(username))
break
else:
print('Wrong password....Input again')
count+=1
else:
print('You have tried 3 times before,your username has been locked')
break
else:
print('You have tried 3 times,your username is being locked')
locklist.append(username)
pickle_file1 = open('userlock.pkl', 'wb')
pickle.dump(locklist,pickle_file1) pickle_file1.close()

4.遇到几个问题

A.pickle.load()老是报'' EOFError: Ran out of input ''(6,7行),最后发现是我pickle_file1文件是空文件导致的,所以我添加了几个元素到文件里面的locklist后问题解决。

B.字典dict访问values时,如果key是一个变量可以通过内置函数get()访问.

5.待改进的地方

a.仅限于同一账户密码输错三次锁定。在用户名正确的情况下,若三次输入的用户名不同,则也会被计入次数。

b.可以增加注册系统,丰富登录界面等。

最新文章

  1. AsyncTask 轻量级的异步类
  2. GPU 优化总结
  3. Java 炫舞按键功能 DancingPlay (整理)
  4. Oracle Lock 概述
  5. 设计模式之观察者模式(Observer Pattern)
  6. Iconfinder 如何杜绝盗版,哈希算法检测图像重复
  7. Android非常有用的开源库介绍整理
  8. linux下libreoffice安装测试
  9. NFS启动时报错Linux NFS:could not open connection for tcp6
  10. 手机上的ROM与RAM
  11. 批量执行工具PSSH详解
  12. python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍
  13. Dubbo学习笔记8:Dubbo的线程模型与线程池策略
  14. JVM调优-GC参数
  15. 快学Scala 1
  16. 【转载】Please configure Android Sdk(android studio)解决办法
  17. ADHOC Report 配置
  18. css方法div固定在网页底部
  19. 关于谷歌浏览器62版本之后引用video.js不能自动播放的问题(Cross-origin plugin content from http://vjs.zencdn.net/swf/5.0.0-rc1/video-js.swf must have a visible size larger than 400 x 300 pixels, or it will be blocked.)
  20. spring.net aop 讲解

热门文章

  1. python mysql安装
  2. 表空间常用sql汇总
  3. Oracle 时段负载情况
  4. February 8 2017 Week 6 Wednesday
  5. WEB开发的jsp例子标签库(jstl)的使用
  6. (转)对于ESP、EBP寄存器的理解
  7. springmvc常用注解标签详解(转载)
  8. eclipse run on server 时 报的错误APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
  9. Ubuntu14.04.3,apt-get出现dpkg: error processing package xxx (--configure)和cups-daemon错误的解决方案
  10. php无极限分类函数