编写登陆接口

  • 输入用户名密码
  • 认证成功后显示欢迎信息
  • 输错三次后锁定

程序逻辑图:

代码:

 #!/usr/bin/env python
#_*_ coding:UTF-8 _*_
#__author__ = lee sir import sys userinfo = r'D:\Python_Scripts\day1\userinfo.txt'
userlock = r'D:\Python_Scripts\day1\userlock.txt' #用户输入用户名和密码
def user_input():
name = input("username:")
passwd = input("password:")
return name,passwd #判断用户是否是已注册用户
def judge_register(user):
with open(userinfo) as fd:
for info in fd.readlines():
username,password = info.split()
if user == username:
return True
else:
return False #注册用户
def register_user(user,password):
fd = open(userinfo,'a+')
fd.write('%s %s\n' % (user,password))
sys.exit('user register Success!') #判断用户名密码正确性
def judge_password(user,passwd):
with open(userinfo) as fd:
for info in fd.readlines():
username,password = info.split()
if user == username and passwd == password:
return True
else:
return False #测试用户是否被锁定
def test_user(user):
with open(userlock) as fd:
for info in fd.readlines():
if user == info.strip('\n'):
return True
else:
return False #锁定用户
def lockuser(user):
fd = open(userlock,'a+')
fd.write('%s\n' % user )
fd.close()
sys.exit("Your Account is locking !!") #主函数
def main():
count = 0
while count < 3:
username,password = user_input() #获取用户输入的用户名和密码
judge_register_result = judge_register(username)
if judge_register_result: #启动登陆流程
test_user_result = test_user(username) #判断用户是否被锁定
if test_user_result:
sys.exit('Sorry,Your Account is locked !!')
else: #验证用户名密码是否正确
judge_password_result = judge_password(username,password)
if judge_password_result:
sys.exit('Hello,Welcome login!!')
else:
if count < 2:
print('Username or Password is Wrong,You have %s chance' % (2-count))
count += 1
else: #启动注册流程
user_choice = input('Are you want to register ? [y/n]')
if user_choice == 'y' or user_choice == 'Y':
register_user(username,password)
sys.exit('register successful,Please relogin !')
elif user_choice == 'n' or user_choice == 'N':
sys.exit('Bye Bye')
else:
sys.exit('Input Error,Bye Bye!')
else: #三次失败 锁定帐户
lockuser(username) if __name__ == '__main__':
main()

最新文章

  1. tst、cmp、bne、beq指令
  2. C# 线程(二):关于线程的相关概念
  3. windows版爬取csdn
  4. Stars(BIT树状数组)
  5. java调用webservice
  6. 【2017年新篇章】 .NET 面试题汇总(一)
  7. CI Weekly #16 | 从另一个角度看开发效率:flow.ci 数据统计功能上线
  8. 第一周作业.四则运算生成器(基于python)
  9. JavaScript递归原理
  10. 小强学渲染之Unity Shader编程HelloWorld
  11. bzoj2086 Blocks
  12. vue路由vue-router的使用
  13. 大话Json对象和Json字符串
  14. MFC笔记5
  15. CentOS下防御或减轻DDoS攻击方法(转)
  16. 重启uwsgi脚本备份
  17. 第2节 常用软件安装-JDK和Tomcat
  18. golang martini 源码阅读笔记之martini核心
  19. cocos2d-x游戏引擎核心之五——触摸事件和触摸分发器机制
  20. sqlldr load UTF8 error

热门文章

  1. eclipse 关闭validating
  2. 第三篇 Postman之 Tests(后置处理器,断言)
  3. 类和实例属性的查找顺序 mro查找
  4. Python 中的容器 collections
  5. tp5 项目实战 初级 文字步骤
  6. python 动态函数调用及可变参数传入
  7. windows下git hub的GUI软件配置与使用
  8. HDU 1798 Tell me the area
  9. vue-component=&gt;v-on
  10. Laravel 5 如何实现网站在维护模式下允许指定 IP 用户访问(白名单)