Python阶段复习 - part 4 - 用户登录程序
2024-08-28 14:16:15
简易版:
#!/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
最新文章
- nodejs的第五天学习笔记
- python的各种编辑器-PyScripter、pycharm 、atom、vscode、Sublime Text等等
- 【poj1655】Balancing Act
- background的css 排列顺序写法?
- Java基础-JVM类加载机制
- LENGTH() CHAR_LENGTH()
- [转]javascript js cookie的存储,获取和删除
- Bootstrap_Javascript_选项卡
- Git 少用 Pull 多用 Fetch 和 Merge(转)
- Android -- 自定义ScrollView实现放大回弹效果
- ToolStrip和MenuStrip控件簡介及常用屬性(转)
- TP5整合 WorkerMan 以及 GatewayWorker
- linux redis基础应用 主从服务器配置
- JQ五星好评效果
- [Swift]LeetCode657. 机器人能否返回原点 | Robot Return to Origin
- docsify网站文档工具用法总结
- 解析ArcGis的字段计算器(二)——有玄机的要素Geometry属性,在属性表标记重复点线面
- 通过java递归思想实现以树形方式展现出该目录中的所有子目录和文件
- windows下忘记mysql超级管理员root密码的解决办法(也适用于wamp)
- #JS 窗口resize避免触发多次
热门文章
- getGeneratedKeys自动获取主键的方法
- java 基础 --集合--012
- 【bzoj4579】[Usaco2016 Open]Closing the Farm 并查集
- 【bzoj1609】[Usaco2008 Feb]Eating Together麻烦的聚餐 dp
- CSS-posiziton
- IntelliJ IDEA2018注册
- Pycharm中一些不为人知的技巧
- 仅此一文让你明白ASP.NET MVC 之Model的呈现
- 在eclipse中安装html编辑器插件
- Makefile中的 =,:=,?=,+= 的差异