要求:

  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. ifame高度自动适应子页面内容

    被这个问题折磨了好久,试了很多方法都不行,总算解决了,记录一下. <div class="iframe-pro" id="iframe-proid"> ...

  2. Linux 压缩 与解压命令

    tar命令 解包:tar zxvf FileName.tar 打包:tar czvf FileName.tar DirName gz命令 解压1:gunzip FileName.gz 解压2:gzip ...

  3. spring +springmvc+mybatis组合web.xml文件配置

    <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://w ...

  4. OpenGL的配置与搭建

    一.项目中所使用的OpenGL扩展库有: 1. freeglut-3.0.0 2. glew-2.0.0 3. glm-0.9.7.3 二.添加扩展库文件 在工程项目文件夹里面添加OpenGLExte ...

  5. jQuery手风琴的制作!!

    jQuery手风琴的制作 首先我们先来做一个简单的jQuery的效果图 效果图 如下: css代码 如下: <style type="text/css" media=&quo ...

  6. 选择、冒泡排序,二分查找法以及一些for循环的灵活运用

    import java.util.Arrays;//冒泡排序 public class Test { public static void main(String[] args) { int[] ar ...

  7. hibernate之映射文件VS映射注解

    前言 对于java开发者而言,注解应该不是一个陌生的概念,早在JavaSE阶段,例如@Override标记重写父类方法或实现接口方法,@Test标记单元测试方法,所以我们可以简单地把它理解为一种有特殊 ...

  8. ABP从入门到精通(2):aspnet-zero-core 使用MySql数据库

    关于 asp.net zero core 项目的启动及说明,请观看我前面的博文 http://www.cnblogs.com/stulzq/p/7237153.html 本操作对于ABP默认项目应该也 ...

  9. Java设计模式之模板方法设计模式(银行计息案例)

    不知道为什么,这几天对Java中的设计模式非常感兴趣,恰巧呢这几天公司的开发任务还不算太多,趁着有时间昨天又把模板方法模式深入学习了一下,做了一个客户在不同银行计息的小案例,感触颇深,今天给各位分享一 ...

  10. HDOJ2005-第几天?

    Problem Description 给定一个日期,输出这个日期是该年的第几天.   Input 输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input , ...