要求:

  1. 输入用户名和密码
  2. 认证成功,显示欢迎信息
  3. 用户名3次输入错误后,退出程序
  4. 密码3次输入错误后,锁定用户名

Readme:

  1. UserList.txt 是存放用户名和密码的文件,格式为:username: password,每行存放一条用户信息
  2. LockList.txt 是存放已被锁定用户名的文件,默认为空
  3. 用户输入用户名,程序首先查询锁定名单 LockList.txt,如果用户名在里面,提示用户被锁定,并退出程序
  4. 如果用户名不在锁定名单里,程序将查询用户名单 UserList.txt ,如果用户名不在里面,将提示用户不存在,请重新输入,三次输入错误,将退出程序
  5. 如果用户名在用户名单里,将提示用户输入密码,密码正确,显示欢迎信息;3次输入错误,将锁定此用户名(写入锁定名单)

流程图:

         

代码:

 # Joe Young

 import os, sys, getpass

 os.system('cls')            #调用os模块的system方法传入'cls'参数,清屏

 count = 0                   #用户名登录次数计数

 while count < 3:

     username = input('username:')

     lock_file = open('LockList.txt', 'r+')      #打开LockList.txt文件,权限r+(打开用于读和写文件。文件指针置于该文件的开头)
lock_list = lock_file.readlines() #使用readlines()方法逐行读取LockList.txt,生成列表,并赋值给lock_list for lock_line in lock_list:
if username == lock_line.strip('\n'): #使用strip()方法去掉换行符,判断username是否在LockList.txt
print('用户名 %s 已被锁定,请联系管理员...' %(username))
sys.exit(1) #sys模块的exit()方法表示退出 with open('UserList.txt', 'r') as user_file: #打开UserList.txt,权限只读
user_list = user_file.readlines() #逐行读取UserList.txt文件,赋值给user_list变量 for user_line in user_list:
(user, passwd) = user_line.strip('\n').split(': ') #获取user,passwd的值,用split(': ')实现分割字符串
if user == username: #判断用户名是否在UserList.txt文件内
n = 0 #密码输入次数计数
while n < 3: #3次输入机会
password = getpass.getpass('password:') #使用getpass模块的getpass()方法获取用户输入的密码
if password == passwd: #判断密码是否匹配
print('欢迎 %s 登陆系统!' %(username))
sys.exit(0)
else:
if n != 2: #n=2时,是最后一次机会,不需要提示还剩下0次机会
print('密码错误,请重新输入,您还有 %d 次机会\n' %(2-n))
n += 1 #密码输入错误,次数+1
else:
lock_file.write(username + '\n') #密码输入错误次数达到3次,把用户名写入LockList.txt文件,锁定用户名
sys.exit('错误次数过多,用户名已被锁定...')  #程序退出,并输出提示
else: #用户名不存在,执行else语句
if count != 2: #count=2时,是最后一次输入用户名的机会,不用提示还剩下0次机会了
print('用户名不存在,请重试,您还有 %d 次机会\n' %(2-count))
count += 1 #用户名输入错误,count+1 else: #用户名输入错误次数达到3次
sys.exit('输入次数过多,程序已退出...') #退出程序,并输出提示 lock_file.close() #关闭LockList.txt文件

Python实现登录接口的更多相关文章

  1. (转)python编写登录接口

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://506554897.blog.51cto.com/2823970/1907262 ...

  2. Python+request 登录接口reponse的返回值token跨py文件的传递《二》

    主要使用场景: 一般我们在进行接口测试时,依赖登录接口后reponse中的某些返回值,因此需要将login接口单独写一个py文件,另外的py文件均可调用login的reponse返回值使用.共用登录接 ...

  3. Python+request 登录接口reponse中token传递给其他接口使用,小示例介绍《一》

    要求: 1.调用登录login 2.调用通过登录接口返回的reponse中的token和uuid,实现test_create_todo接口的测试 实现: 1.login登录接口的调用,直接填写对应的U ...

  4. Python之登录接口

    要求 1.输入用户名密码2.认证成功后显示欢迎信息3.输错三次后锁定 思路 没有数据库,这里使用本地文件,一共需要两个文件:       黑名单的文件:黑名单里检测,不让登录     用户信息文件:将 ...

  5. 8.Python编写登录接口

    1.python需安装flask,在命令行窗口输入:pip3 install flask 2.代码如下所示: from flask import Flask,request,jsonify,sessi ...

  6. Python作业--登录接口

    作业需求: 编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 实现思路: 1.从文件获取用户名密码 2.判断是否在黑名单中 3.验证用户名密码 成功:输出认证成功 错误:判断验证次 ...

  7. python编写登录接口

    要求: 输入用户名密码     认证成功显示欢迎信息 输错三次以后锁定 代码如下: # Author:YKwhile(True): select=input('请问是注册还是登录') if selec ...

  8. Python 编写登录接口

    流程图: 源码:

  9. python 测试登录接口只返回response200的问题

    但是使用postman测试是有json串的 后来发现postman传参是用的raw格式,raw的格式相当于json 而这里的data其实是form-data格式,需要用json的格式

随机推荐

  1. kbengine服务端引擎技术概览

    http://www.kbengine.org/assets/other/KBEngine_overview.zip

  2. css自定义动画在微信中无法执行的原因

    这是我去年年底遇到的一个问题, 在这个过程中我发现了一个比较有趣的问题. 我们在做抽奖的时候,微信分享到朋友圈的页面里,安卓机器无法执行页面中的自定义动画(元宝的位移,进入按钮的放大缩小等等).这让我 ...

  3. C# Lambda表达式运用

    原文作者: C# Lambda表达式 原文作者2: Lambda表达式详解 Lambda表达式 "Lambda表达式"是一个匿名函数,是一种高效的类似于函数式编程的表达式,Lamb ...

  4. 十年过去了,各位 .net 兄弟还好吗

    时间是最无情的,一下子就毕业10年了.很久没有发发牢骚了,今天突然想发一下.看过我文章喷过的知道,我一般都是散文,看完不知道我写了什么,形散而神不散嘛. 十年了,不好意思,没像网上说的标准一样,做管理 ...

  5. HDU 1698 Just a Hook(线段树成段更新)

    题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1698 题目: Problem Description   In the game of DotA, P ...

  6. Android-Bluetooth Low Energy(BLE)

    Android Bluetooth Low Energy Android 低功耗蓝牙简介 2016-4-18 Android4.3(API 18)介绍了平台支持的低功耗蓝牙,app可用于发现设备,检索 ...

  7. 干货:基于 Git Flow 的 Git 最佳实践(附加解决大家经常碰到的问题)

    突然想写这一篇Git的使用心得,主要有几个原因,其一是自己使用Git也有快3年时间了,其间自己经历过一些坑,也有迷茫的时候,在呆过的大大小小的团队中,其实每个人也都并不是Git专家,很多对于流程以及G ...

  8. 设计模式的征途—14.职责链(Chain of Responsibility)模式

    相信大家都玩过类似于“斗地主”的纸牌游戏,某人出牌给他的下家,下家看看手中的牌,如果要不起,则将出牌请求转发给他的下家,其下家再进行判断.一个循环下来,如果其他人都要不起该牌,则最初的出牌者可以打出新 ...

  9. JavaScript Base64加解密

    Base64加密算法是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045-RFC2049,上面有MIME的详细规范.Base64编码可用于在HTTP环境下传递较长的标识信 ...

  10. RobotFramwork安装报错name 'execfile' is not defined

    安装RobotFramwork的时候,提示了这个?是什么原因呢? 本机装的是python3.6: 经官方回复得知识因为python的版本不兼容该模块的安装. 官方认定版本是2.7,所以这里推荐大家玩p ...