简易版:

#!/usr/bin/env python
# _*_ coding:UTF-8 _*_
# __auth__:Dahlhin import sys userinfo = r'userinfo.txt'
userlock = r'userlock.txt' def user_exist_check(user):
'''检查用户是否存在'''
with open(userinfo) as fd:
for info in fd:
if user == info.strip().split()[0]:
return True
return False def user_lock_check(user):
'''检查用户是都被锁定'''
with open(userlock) as fd:
for lock in fd:
if user == lock.strip():
return True
return False def passwd_check(passwd):
'''检查密码合法性'''
with open(userinfo) as fd:
for info in fd:
if passwd == info.strip().split()[1]:
return True
return False def lock_user(user):
'''用户锁定'''
with open(userlock,'a') as fd:
fd.write('%s\n' % user) def user_login():
'''登陆主程序'''
count = 0
while count < 3:
user = input('UserName:')
passwd = input('PassWord:')
if user_exist_check(user):
if not user_lock_check(user):
if passwd_check(passwd):
return True
else:
print('密码错误')
else:
print('账号被锁定')
else:
print('账号不存在')
count += 1 else:
if user_exist_check(user):
if not user_lock_check(user):
lock_user(user)
return False if __name__ == '__main__':
result = user_login()
if result:
print('Welcome login')
else:
print('bye bye')

  

规范化范式版本

代码存放在github上:https://github.com/dachenzi/UserLoginScript

基础需求
  • 让用户输入用户名密码
  • 认证成功后显示欢迎信息
  • 输错三次后退出程序
升级需求
  • 可以支持多个用户登录 (提示,通过列表存多个账户信息)
  • 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)
目录说明
  • bin:程序可执行文件目录
  • conf:配置文件目录
  • db:数据存放目录
  • libs: 依赖库文件目录
  • logs: 日志存储目录
程序说明
  • 执行 bin/main.py 运行程序
  • 用户存放在 db/account_db中,使用configparser读取,密码为MD5 加密字符串,初始密码都为123456

最新文章

  1. nodejs的第五天学习笔记
  2. python的各种编辑器-PyScripter、pycharm 、atom、vscode、Sublime Text等等
  3. 【poj1655】Balancing Act
  4. background的css 排列顺序写法?
  5. Java基础-JVM类加载机制
  6. LENGTH() CHAR_LENGTH()
  7. [转]javascript js cookie的存储,获取和删除
  8. Bootstrap_Javascript_选项卡
  9. Git 少用 Pull 多用 Fetch 和 Merge(转)
  10. Android -- 自定义ScrollView实现放大回弹效果
  11. ToolStrip和MenuStrip控件簡介及常用屬性(转)
  12. TP5整合 WorkerMan 以及 GatewayWorker
  13. linux redis基础应用 主从服务器配置
  14. JQ五星好评效果
  15. [Swift]LeetCode657. 机器人能否返回原点 | Robot Return to Origin
  16. docsify网站文档工具用法总结
  17. 解析ArcGis的字段计算器(二)——有玄机的要素Geometry属性,在属性表标记重复点线面
  18. 通过java递归思想实现以树形方式展现出该目录中的所有子目录和文件
  19. windows下忘记mysql超级管理员root密码的解决办法(也适用于wamp)
  20. #JS 窗口resize避免触发多次

热门文章

  1. getGeneratedKeys自动获取主键的方法
  2. java 基础 --集合--012
  3. 【bzoj4579】[Usaco2016 Open]Closing the Farm 并查集
  4. 【bzoj1609】[Usaco2008 Feb]Eating Together麻烦的聚餐 dp
  5. CSS-posiziton
  6. IntelliJ IDEA2018注册
  7. Pycharm中一些不为人知的技巧
  8. 仅此一文让你明白ASP.NET MVC 之Model的呈现
  9. 在eclipse中安装html编辑器插件
  10. Makefile中的 =,:=,?=,+= 的差异