Python实现登录接口的示例代码


Posted in Python onJuly 21, 2017

之前写了Python实现登录接口的示例代码,最近需要回顾,就顺便发到随笔上了

要求:

1.输入用户名和密码

2.认证成功,显示欢迎信息

3.用户名3次输入错误后,退出程序

4.密码3次输入错误后,锁定用户名

Readme:

1.UserList.txt 是存放用户名和密码的文件,格式为:username: password,每行存放一条用户信息

2.LockList.txt 是存放已被锁定用户名的文件,默认为空

3.用户输入用户名,程序首先查询锁定名单 LockList.txt,如果用户名在里面,提示用户被锁定,并退出程序

4.如果用户名不在锁定名单里,程序将查询用户名单 UserList.txt ,如果用户名不在里面,将提示用户不存在,请重新输入,三次输入错误,将退出程序

5.如果用户名在用户名单里,将提示用户输入密码,密码正确,显示欢迎信息;3次输入错误,将锁定此用户名(写入锁定名单)

流程图:

Python实现登录接口的示例代码

代码:

# 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 相关文章推荐
Python语言技巧之三元运算符使用介绍
Mar 04 Python
Python中的自省(反射)详解
Jun 02 Python
Linux中Python 环境软件包安装步骤
Mar 31 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
Dec 22 Python
Python 实现王者荣耀中的敏感词过滤示例
Jan 21 Python
PyQt5 QTable插入图片并动态更新的实例
Jun 18 Python
python适合人工智能的理由和优势
Jun 28 Python
用python3 urllib破解有道翻译反爬虫机制详解
Aug 14 Python
python实现批量文件重命名
Oct 31 Python
Pandas读取csv时如何设置列名
Jun 02 Python
python批量生成条形码的示例
Oct 10 Python
Pytorch可视化的几种实现方法
Jun 10 Python
centos6.4下python3.6.1安装教程
Jul 21 #Python
Python复数属性和方法运算操作示例
Jul 21 #Python
Python整型运算之布尔型、标准整型、长整型操作示例
Jul 21 #Python
Python双精度浮点数运算并分行显示操作示例
Jul 21 #Python
详解Golang 与python中的字符串反转
Jul 21 #Python
Python随机生成手机号、数字的方法详解
Jul 21 #Python
Python实现将16进制字符串转化为ascii字符的方法分析
Jul 21 #Python
You might like
用PHP实现读取和编写XML DOM代码
2010/04/07 PHP
PHP小教程之实现双向链表
2014/06/12 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
php计算两个日期相差天数的方法
2015/03/14 PHP
php生成二维码
2015/08/10 PHP
微信公众平台开发(五) 天气预报功能开发
2016/12/03 PHP
MAC下通过改apache配置文件切换php多版本的方法
2017/04/26 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
php实现的顺序线性表示例
2019/05/04 PHP
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
javascript实现的动态文字变换
2007/07/28 Javascript
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
2010/06/02 Javascript
基于jquery封装的一个js分页
2011/11/15 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
2017/02/22 Javascript
jQuery中用on绑定事件时需注意的事项
2017/03/19 Javascript
JS实现简单的天数计算器完整实例
2017/04/28 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
2018/09/29 Javascript
如何用Python实现简单的Markdown转换器
2018/07/16 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
Python 实现递归法解决迷宫问题的示例代码
2020/01/12 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
2021/02/20 Python
BONIA官方网站:国际奢侈品牌和皮革专家
2016/11/27 全球购物
美国睫毛、眉毛精华液领导品牌:RevitaLash Cosmetics
2018/03/26 全球购物
预订全球最佳旅行体验:Viator
2018/03/30 全球购物
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-> (一千零一拾一元整)输出
2015/05/29 面试题
九州传奇上机题
2014/07/10 面试题
介绍一些UNIX常用简单命令
2014/11/11 面试题
大学生第一学年自我鉴定
2014/09/12 职场文书
旅行社计调工作总结
2015/08/12 职场文书
python中使用 unittest.TestCase单元测试的用例详解
2021/08/30 Python