Python3模拟登录操作实例分析


Posted in Python onMarch 12, 2019

本文实例讲述了Python3模拟登录操作。分享给大家供大家参考,具体如下:

模拟登录_要求:

1. 用户输入账号密码进行登录
2. 用户信息保存在文件内
3. 用户密码输入错误三次后锁定用户

逻辑图:

Python3模拟登录操作实例分析

代码:

#!/usr/bin/env python3
# Author:Robert
# --*-- coding: utf-8 --*--
count = 0  #记录试错次数,计数项赋初始值
load = True  #完成功能后退出,赋初始值
file = open("用户信息文件.txt",'r',encoding='utf-8')
file_lock = open("锁定用户信息文件.txt",'r+',encoding='utf-8')
line = eval(file.readline())  #将正确信息中的字符串转换成字典(原字符串为字典格式)
line_list = eval(file_lock.readline())  #将正确信息中的字符串转换成列表(原字符串为列表格式)
def out():  #定义重复代码,目的是帮助跳出while循环并关闭已打开的文档
  global load
  load = False  #赋值load,为了跳出while循环
  file_lock.close()  #关闭正确用户信息文档
  file.close()  #关闭锁定用户信息文档
while load:  #判断是否已完成功能
  name = input("请输入用户名:")
  password = input("请输入密码:")
  if name in line and name not in line_list:  #判断用户名是否正确,是否已被锁定
    while count < 3:
      if password == line[name]:  #判断用户名是否对应正确的密码
        print("您已成功登录")
        out()  #调用定义out方法
        break
      else:  #说明未输入的正确的密码
        count +=1
        msg_count = '第%s次密码输入错误\n'%(count)  #提示输入错误次数
        print(msg_count)
        if count < 3:  #小于三次错误的输入,可以重新输入
          password = input("密码错误,请重新输入密码:")  #重新输入密码
        elif count == 3:  #判断是否已输错三次
          print("已输错3次,账号已锁定")
          line_list.append(name)  #将已锁定信息加入锁定元组中
          file_lock.seek(0)  #输入指针移到开头,如果不移动会产生多个元组
          file_lock.write(str(line_list))  #写入锁定信息
          file_lock.tell()  #获取当前的输入指针位置,如果不获取会产生多个元组
          out()
          break
  elif name in line_list:  #判断用户名是否在已锁定用户名中
    print("该用户名已被锁定")
    out()
    break
  else:  #说明用户名不在正确用户名信息中
    print("该用户名不存在")
    out()

用户信息文件.txt

{"name":"password","XiaoMing":"123456","Robert":"234567","Alex":"345678","haha":"123","hahage":"123","hahage2":"123","hahage3":"123"}

锁定用户信息文件.txt

['name']

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python模拟enum枚举类型的方法小结
Apr 30 Python
轻松掌握python设计模式之策略模式
Nov 18 Python
Ubuntu下创建虚拟独立的Python环境全过程
Feb 10 Python
Python字典实现简单的三级菜单(实例讲解)
Jul 31 Python
分数霸榜! python助你微信跳一跳拿高分
Jan 08 Python
tensorflow实现简单的卷积神经网络
May 24 Python
python实现简单http服务器功能
Sep 17 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
Jun 24 Python
python元组和字典的内建函数实例详解
Oct 22 Python
Python 一行代码能实现丧心病狂的功能
Jan 18 Python
python3读取autocad图形文件.py实例
Jun 05 Python
Python编解码问题及文本文件处理方法详解
Jun 20 Python
深入解析python中的实例方法、类方法和静态方法
Mar 11 #Python
Python 函数返回值的示例代码
Mar 11 #Python
浅谈Python批处理文件夹中的txt文件
Mar 11 #Python
Python数据报表之Excel操作模块用法分析
Mar 11 #Python
Python合并同一个文件夹下所有PDF文件的方法
Mar 11 #Python
Python实现截取PDF文件中的几页代码实例
Mar 11 #Python
Python XlsxWriter模块Chart类用法实例分析
Mar 11 #Python
You might like
树型结构列出指定目录里所有文件的PHP类
2006/10/09 PHP
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
2016/04/02 PHP
jquery对ajax的支持介绍
2013/12/10 Javascript
IE6兼容透明背景图片及解决方案
2015/08/19 Javascript
jQuery自适应轮播图插件Swiper用法示例
2016/08/24 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
2017/06/20 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
layui实现点击按钮给table添加一行
2018/08/10 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
举例讲解Python中装饰器的用法
2015/04/27 Python
python实现的希尔排序算法实例
2015/07/01 Python
python数组过滤实现方法
2015/07/27 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
Python实现的计算马氏距离算法示例
2018/04/03 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
如何在python中写hive脚本
2019/11/08 Python
使用python实现希尔、计数、基数基础排序的代码
2019/12/25 Python
python 使用递归回溯完美解决八皇后的问题
2020/02/26 Python
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
html5 音乐播放器 audio 标签使用概述
2013/07/15 HTML / CSS
Intersport西班牙:在线体育商店
2019/11/06 全球购物
表扬信格式
2014/01/12 职场文书
小学教师师德反思
2014/02/03 职场文书
校园安全广播稿
2014/02/08 职场文书
《秋游》教学反思
2014/04/24 职场文书
环保倡议书300字
2014/05/15 职场文书
电子商务专业应届毕业生求职信
2014/06/21 职场文书
公司行政专员岗位职责
2014/08/24 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
关于做家务的心得体会
2016/01/23 职场文书
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server