编写登陆接口

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

帐号文件user.txt内容如下:

qaz 123
qwe 12345
qweqwr 12321424
......


锁文件user_lock.txt默认为空


一、只针对帐号文件里的用户进行判断并锁定,针对用户和密码各有三次错误重试机会。
流程图:


二、代码如下

 # Author: zfh
# -*- coding:utf-8 -*-
import os,getpass,sys i = 0
while i < 3: #开始循环,只要用异常登录不超过三次
name = input('请输入用户名:') #输入用户名 lock_file = open('user_lock.txt','r+') #打开锁定用户文件,检查登录用户是否被锁定(r+--读写),文件名前直接加路径
lock_list = lock_file.readlines() #逐行读取锁定用户记录文件 for lock_line in lock_list: #循环读取的锁定用户记录
lock_line = lock_line.strip('\n') #去掉换行符
if name == lock_line: #如果输入用户被锁定,直接退出
sys.exit('用户%s已锁定' %name) #输出提示用户被锁定 user_file = open('user.txt','r') #打开用户文件(r--只读)
user_list = user_file.readlines() #逐行读取用户文件 for user_line in user_list: #循环读取的用户记录
(user,passwd) = user_line.strip('\n').split() #分别获取帐号和密码信息
if name == user: #如用户名正常匹配
j = 0
while j < 3: #只要用户密码异常不超过3次就不断循环
password = getpass.getpass('请输入密码:') #输入隐藏密码,import getpass
if passwd == password: #如果密码正确,提示欢迎登录
# print('登录成功%s'%name)
sys.exit('用户%s登录成功'%name) #输出欢迎用户登录,正常退出
else:
if j != 2: #j!=2时继续循环
print('用户 %s 密码错误,请重新输入,还有 %d 次机会' % (name,2 - j))#提示还剩余0次机会了
j += 1 #密码输入错误后,循环值增加1
else: #密码输入三次错误后,将该用户追加到LOCK文件
lock_file.write(name +'\n')
sys.exit('用户 %s 达到最大登录次数,将被锁定并退出' % name)
else:
pass #当用户没匹配时,跳过并继续循环
else:
if i != 2: #i!=2是循环
print('用户 %s 不存在,请重新输入,还有 %d 次机会' % (name,2 - i)) #提示还剩余0次机会了
i += 1 #当用户输入错误时,循环值增加1
else:
sys.exit('用户 %s 不存在,退出' % name) #用户输入三次错误后,异常退出 lock_file.close() #关闭LOCK文件
user_file.close() #关闭帐号文件

Python学习第一天-编写登陆接口的更多相关文章

  1. python之编写登陆接口(第一天)

    作业:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 针对此实例写了有二种类型的脚本,略有不同,具体如下: 帐号文件account.txt内容如下: sam 123 david ...

  2. Python学习之编写登陆接口(Day1,作业一)

    作业一:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定(下次登陆还是锁定) 知识点:while循环,for循环,文件操作,if判断,列表操作 思路: 1.登陆,三次登陆失败,锁定 ...

  3. 使用 Python 编写登陆接口

    # 使用 Python 编写登陆接口# Create Date: 2017.10.31 Tuesday# Author: Eric Zhao# -*- coding:utf-8 -*-'''编写登陆接 ...

  4. python学习第一讲,python简介

    目录 python学习第一讲,python简介 一丶python简介 1.解释型语言与编译型语言 2.python的特点 3.python的优缺点 二丶第一个python程序 1.python源程序概 ...

  5. day1作业:编写登陆接口

    作业一:编写登陆接口 1.输入用户名和密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 思路:要求是编写登陆接口,那么要有一个存放用户信息的模块:三次后锁定,要有一个存放锁定用户信息的模块:我们知 ...

  6. Python小程序之用户登陆接口

    编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 程序逻辑图: 代码: #!/usr/bin/env python #_*_ coding:UTF-8 _*_ #__author_ ...

  7. Python学习-第一天-函数和模块的使用

    目录 Python学习-第一天总结 print输出的一种简单格式 函数参数之可变参数 模块管理函数 if else语句的单行实现(简洁) 变量作用域 函数书写格式 Python学习-第一天总结 pri ...

  8. day1作业一:编写登陆接口

    作业一:编写登陆接口 1.输入用户名和密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 Readme: (1)提示用户输入用户名: (2)用户名验证,验证是否已经锁定: (3)是否锁定:已锁定告诉 ...

  9. python 作业 编写登陆接口

    # -*- coding:utf-8 -*-import os,sysfor i in range(3):#进行3次循环 blacklist = open(r"C:\Users\Pc4\De ...

随机推荐

  1. BZOJ 1014 [JSOI2008]火星人prefix (splay+二分答案+字符串hash)

    题目大意:维护一个字符串,支持插入字符和替换字符的操作,以及查询该字符串两个后缀的最长公共前缀长度 乍一看以为是后缀数组,然而并没有可持久化后缀数组(雾) 看题解才知道这是一道splay题,首先要对s ...

  2. debian 9 添加源

    1.将下面内容的添加入/etc/apt/sources.list(香港镜像) #For software deb http://mirrors.ustc.edu.cn/debian/ stretch ...

  3. PHP下的异步尝试三:协程的PHP版thunkify自动执行器

    PHP下的异步尝试系列 如果你还不太了解PHP下的生成器和协程,你可以根据下面目录翻阅 PHP下的异步尝试一:初识生成器 PHP下的异步尝试二:初识协程 PHP下的异步尝试三:协程的PHP版thunk ...

  4. js中的变量提升和函数提升

    从上周开始,我所在的学习小组正式开始了angular的学习,angular是全面支持es6的,所以语法上和以前的angular有了很大的不同,比如变量声明时就抛弃了var,而选择了let和const: ...

  5. hbase的hbase-site.xml配置文件

    <property> <name>hbase.rootdir</name> <value>hdfs://server110/hbase</valu ...

  6. jquery weui ajax滚动加载更多

    手机端使用jquery weui制作ajax滚动加载更多. 演示地址:http://wx.cnkfk.com/nuol/static/fpage.html 代码: <!DOCTYPE html& ...

  7. ASP.NET-表单验证-DataAnnotations

    DataAnnotations  [数据注解,数据注释] 需要引入两个脚本文件 <script src="@Url.Content("~/Scripts/jquery.val ...

  8. nyoj 1189 yougth和他的朋友们 (DP)

    题目:pid=1189" target="_blank">nyoj 1189 yougth和他的朋友们 这题目是14年北京赛区的原题.讲题的时候说有三种解法,我们是 ...

  9. React-Native系列Android——Native与Javascript通信原理(一)

    React-Native最核心的是Native与Javascript之间的通信,并且是双向通信.Native层到Javascript层,Javascript层到Native层.虽说是两个方向,但实现上 ...

  10. cocos2d-x 3.0的坑有哪些

    问题一:setup.py 之后, ANT文件夹为什么创建不成功? ANT文件夹要指定到bin以下,NDK和SDK则指定要根文件夹就可以 问题二:cocos run -p android 之后,执行应用 ...