function:用于实现简单的用户登录接口。

description:用户信息存储于字典中,增加用户需手动写入代码中。最多可以尝试登录9次,首次使用会先在程序目录下创建锁文件。若在用户栏输入quit则退出程序。
输入用户,首先根据锁文件中存储用户来判断用户是否被锁,锁了则重新循环输入用户。未被锁则继续输入密码,密码正确会打印消息并退出,错误则对该用户尝试次数+1。
用户的密码错误三次后会被写入锁文件中并退出程序。

source code 如下:

#/usr/bin/env python
# -*- coding:utf-8 -*- import os user_dic = {
'jyd' : {'password': 'abc', 'count': 0},
'test': {'password': 'test', 'count': 0}
}
if not os.path.isfile('lock'):
open('lock','w').close()
total_error = 0
print("Exit from the username and enter : quit")
while total_error < 9 :
user = input('username-->:')
if user == 'quit':
break
if user in user_dic.keys():
#看锁文件中是否有该用户,若有则被锁并重定义lock_u为yes,再跳出锁判断循环。根据lock_u的值确定用户是否被锁。
lock = open('lock', 'r')
for lock_u in lock.read().split('\n'):
if user == lock_u :
print('User %s is in a locked state' %user)
lock_u = 'yes'
break
lock.close()
if lock_u == 'yes': continue
passwd = input('password-->:')
if passwd == user_dic[user]['password']:
print('Login successfully!')
break
else:
print('Password error')
if user_dic[user]['count'] < 3:
user_dic[user]['count'] += 1
else:
lock = open('lock', 'a')
lock.write(user+'\n')
print('User %s has been locked' %user)
break
else:
print('Username does not exist.')
total_error+=1

最新文章

  1. Pramp - mock interview experience
  2. c中的函数
  3. placeholder兼容方法(兼容IE8以上浏览器)
  4. map容器对象插入数据的4种方式
  5. xml处理相关文章收藏
  6. 自定义MapReduce中数据类型
  7. AFDX总线协议规范
  8. 分门别类总结Java中的各种锁,让你彻底记住
  9. angular.isString()
  10. loj.ac:#10024. 「一本通 1.3 练习 3」质数方阵
  11. WebSocket异步通讯,实时返回数据实例
  12. 【题解】Luogu P3950 部落冲突
  13. 如何执行超过一百兆(100MB)的sql脚本?
  14. (转)Python3 模块3之 Urllib之 urllib.parse、urllib.robotparser
  15. 【LeetCode题解】24_两两交换链表中的节点(Swap-Nodes-in-Pairs)
  16. React Router基础教程
  17. 安卓Textview的getLineCount返回0
  18. Loadrunner安装使用入门
  19. 动态创建OATipBean
  20. windows聚焦图片文件重命名bash脚本

热门文章

  1. 踪电子表格中的单元格(Spreadsheet Tracking, ACM/ICPC World Finals 1997, UVa512)
  2. (蓝桥)2017C/C++A组第七题正则问题
  3. windows桌面远程工具连接Ubuntu
  4. css的基本操作学习--css样式,选择器,hover,文字属性,文本属性,背景
  5. BUPT2017 wintertraining(16) #9
  6. Caffe 工程的一些编译错误以及解决方案
  7. LSB、MSB是什么单位
  8. 【ACM】hdu_zs3_1008_Train Problem I_201308100835
  9. POJ 3304 segments 线段和直线相交
  10. 洛谷 P2023 [AHOI2009]维护序列