编写登陆接口

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

帐号文件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. jquery 用于操作动态元素的delegate/on方法

    delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素). 在做项目中有很多由ajax动态生成的html标签,jquery对这些标签不会响应\((selector).c ...

  2. 修改Myeclies作者用户名

    首先点击 windos 点击 preferences 依次点击左侧 Java -> Code Style -> Code Templates 击右侧Comments,将其中的Types项, ...

  3. Sublime 插件Pylinter could not automatically determined the path to lint.py

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50618630 安装Sublime Te ...

  4. Linux内核源码情景分析-wait()、schedule()

    父进程执行wait4,并调用schedule切换到子进程: wait4(child, NULL, 0, NULL); 像其它系统调用一样.wait4()在内核中的入口是sys_wait4().代码例如 ...

  5. HDOJ 5294 Tricks Device 最短路(记录路径)+最小割

    最短路记录路径,同一时候求出最短的路径上最少要有多少条边, 然后用在最短路上的边又一次构图后求最小割. Tricks Device Time Limit: 2000/1000 MS (Java/Oth ...

  6. POI 导入excel数据自己主动封装成model对象--代码分析

    上完代码后,对代码进行基本的分析: 1.主要使用反射api将数数据注入javabean对象 2.代码中的日志信息级别为debug级别 3.获取ExcelImport对象后须要调用init()方法初始化 ...

  7. Hibernate关系映射中的注解

    一.@Entity 写在映射表的类上面,表示这是映射来的实体 二.@Id @Column(name = "fid", nullable = false) @Basic @Colum ...

  8. Codeforces 10A-Power Consumption Calculation(模拟)

    A. Power Consumption Calculation time limit per test 1 second memory limit per test 256 megabytes in ...

  9. JStorm之Topology调度

      topology在服务端提交过程中,会经过一系列的验证和初始化:TP结构校验.创建本地文件夹并拷贝序列化文件jar包.生成znode用于存放TP和task等信息,最后一步才进行任务分配.例如以下图 ...

  10. EF的CRUD

    已经知道EF就是一个能够使得编程人员用面向对象的思想操作数据库的框架,那么在最初学习SQL的时候我们就知道对数据库的操作就是增删改查.万变不离其宗. EF也是操作数据库的当然也就是要对数据库实现增删改 ...