简易版:

#!/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

Python阶段复习 - part 4 - 用户登录程序的更多相关文章

  1. 运用String类实现一个模拟用户登录程序

    package Test; import java.util.Scanner; // 模拟用户登录程序 // 思路: // 1.用两个String类分别接收用户名和密码 // 2.判断输入的用户名和密 ...

  2. python入门:模拟简单用户登录(自写)

    #!/usr/bin/env python # -*- coding: utf-8 -*- #模拟简单用户登录(自写) import getpass a = raw_input("Pleas ...

  3. Python入门-用户登录程序升级版

    编写登陆接口 基础需求: 让用户输入用户名密码 认证成功后显示欢迎信息 输错三次后退出程序 升级需求: 可以支持多个用户登录 (提示,通过列表存多个账户信息) 用户3次认证失败后,退出程序,再次启动程 ...

  4. Python练习-有点儿意思的用户登录

    Alex大神的需求(说实话他需求真特么多,真难满足他): 编写一个用户登陆接口:输入用户名密码,认证成功后显示欢迎信息,输错三次后锁定; # 编辑者:闫龙 #用户登录功能输入3次以上会被锁定:为了方便 ...

  5. python3.x Day1 用户登录程序练习

    训练1: 模拟登陆: 1. 用户输入帐号密码进行登陆 2. 用户信息保存在文件内 3. 用户密码输入错误三次后锁定用户 login2.py: #!/usr/bin/env python # -*- c ...

  6. Window上python开发--4.Django的用户登录模块User

    Android系统开发交流群:484966421 OSHome. 微信公众号:oshome2015 在搭建站点和web的应用程序时,用户的登录和管理是差点儿是每一个站点都必备的. 今天主要从一个实例了 ...

  7. 基于Struts2的用户登录程序

    基本步骤: 1.新建Java工程,File>New>Project>Web>Dynamic Web Project,并将工程命名为:Struts2_Demo 2.导入strut ...

  8. 第三篇python用户登录程序实现

    需求: 1.通过注册输入用户名和密码 2.能够验证用户名和密码是否正确 3.限制输入一定错误次数后退出程序 4.利用格式化输出方式输出信息 分析: 使用username=input()和passwor ...

  9. Python入门-用户登录程序

    _flag = Falsecount = 0users = [['ziv', '123'], ['alex', '12345']]while count < 3: username = inpu ...

随机推荐

  1. BZOJ4241 历史研究(莫队)

    如果分块的话与区间众数没有本质区别.这里考虑莫队. 显然莫队时的删除可以用堆维护,但多了一个log不太跑得过. 有一种叫回滚莫队的trick,可以将问题变为只有加入操作.按莫队时分的块依次处理,一块中 ...

  2. Linq的模糊查询(包含精确模糊查询)

    目录: 1.判断是否为空或者null 2.普通包含模糊查询 1)以某字符串开头的模糊查询 2)以某字符串结尾的模糊查询 3)包含某字符串的模糊查询 3.精确到字符串对应位数字符的模糊查询(*重点) l ...

  3. P3986 斐波那契数列

    题目描述 定义一个数列: f(0)=a,f(1)=b,f(n)=f(n−1)+f(n−2) 其中 a,b均为正整数,n≥2 . 问有多少种 (a,b),使得 k 出现在这个数列里,且不是前两项. 由于 ...

  4. 蒟蒻Orion还要学的东西!

    这个ID多元化真是个麻烦的事情...... 一会KamijouIndex一会dedicatus545一会Orion的,乱死了啊啊啊啊 数据结构 圆方树 ETT 仙人掌 可持久化树套树 数学 洲阁筛 m ...

  5. BZOJ3926:[ZJOI2015]诸神眷顾的幻想乡——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=3926 https://www.luogu.org/problemnew/show/P3346 幽香 ...

  6. BZOJ1086:[SCOI2005]王室联邦——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1086 题面源于洛谷. 题目描述 “余”人国的国王想重新编制他的国家.他想把他的国家划分成若干个省,每 ...

  7. 函数strcpy的实现

    strcpy函数的百科中给出了各种情况的详细说明,这里,仅给出一些注意事项: 1.strcpy的函数原型是: /* dest(destination)为目标字符串,src(source)为原字符串*/ ...

  8. mybatis <where>、<set>、<trim>、<sql>、<foreach>标签的使用

    转:http://www.cnblogs.com/lixiujie/p/5766669.html <resultMap>标签的使用:这个类似于hibernte用于映射我们创建的vo对象与数 ...

  9. JSX 的基本语法规则

    JSX 的基本语法规则:遇到 HTML 标签(以 < 开头),就用 HTML 规则解析:遇到代码块(以 { 开头),就用 JavaScript 规则解析

  10. 话说Svn与Git的区别

    这篇主要是谈谈两者的区别,至于谁优谁劣看官自己思考吧! 把第一条理解到位思想到位了做起来才会有的放矢,其他几条都是用的时候才能体会到 1) 最核心的区别Git是分布式的,而Svn不是分布的.能理解这点 ...