1.输入用户名密码;

2.认证成功后显示欢迎信息;

3.错误三次后,账号被锁定。

账号文件:user.txt

锁定文件:locked.txt

流程图如下:

# -*- coding:utf-8 -*-
# Author Caoxl
import sys account_file='E:\user.txt'
locked_file='E:\locked.txt' def deny_account(username):
print('您的用户已被锁定')
with file(locked_file,'a') as deny_f:
deny_f.write('\n'+username) def main():
retry_count=0
retry_limit=3 #循环次数
while retry_count<retry_limit: #用户最多重复登陆3次
username=raw_input('请输入您的用户名:') #引导用户输入用户名
with file(locked_file,'r') as lock_f:
#采用with打开方式,将locked_file赋值lock_f,防止忘记f.close()关闭文件
for line in lock_f.readlines(): #循环遍历每一行的内容
if len(line)==0: #对每一行内容进行处理
continue
if username == line.strip():
#利用.strip这个函数去掉换行符,来对username进行匹配。
sys.exit('用户已经被锁定!')
if len(username)==0: #提示用户登录时,用户名不能为空!
print('用户名不能为空,请重新输入')
continue password= raw_input('请输入您的密码:') #引导用户输入密码
with file(account_file,'r') as account_f:
flag= False for line in account_f.readlines():
user,pawd=line.strip().split() #将用户名和对应密码进行处理
if username==user and password==pawd: #判断用户名和密码
print('success!')
flag=True
break #退出for循环
if flag==False: #避免用户在三次输入后,依然提示重新输入。
if retry_count<2:
print('您输入的用户名或密码有误,请重新输入!') retry_count+=1 else:
print('欢迎用户登陆成功!!')
break
# 加标志位是为了用户能够成功推出整个循环!
deny_account(username)
#对应上面的def函数把锁定账号加入文档中去 if __name__ == '__main__':
main()

最新文章

  1. 将windows上的文件同步到linux上
  2. jdb调试命令
  3. RunLoop的模式
  4. wireshark使用简介
  5. Activiti系列: 如何在web中使用activiti和sql server
  6. IOS 其他 - 如何让 app 支持32位和64位
  7. javascript,jquery(闭包概念)
  8. Hibernate从入门到精通(三)Hibernate配置文件
  9. 李炎恢bootstarp_项目实战__瓢城企业(注释+源码)
  10. Jtree (节点的渲染+资源管理器)
  11. 于win7使用虚拟磁盘隐藏文件
  12. storm配置
  13. Xcode中为何要为设置bundle和App分别设置两份一样的图片资源
  14. JS基础之传参(值传递、对象传递)
  15. PHP PDF文件上传
  16. 一次xxoo提权
  17. Java ee第三周作业
  18. 【译】第17节---数据注解-Column
  19. enum-枚举当做key-value业务使用
  20. collate字段详细讲解

热门文章

  1. /proc/kcore失效,调试其文件系统相关模块,使重新正常工作
  2. 微信小程序实战(商城)
  3. Qzone 高性能 HTTPS 实践
  4. C语言错题小本子
  5. 初识Tensorboard
  6. java面试笔试大汇总
  7. ZooKeeper源码分析-Jute-第一部分
  8. Bash变量扩展修改符
  9. io-nio 区别示意图
  10. Java 中Calendar、Date、SimpleDateFormat学习总结