python实现简单登陆系统


Posted in Python onOctober 18, 2018

新手,虽然比较简单的东西,但是弄了我很久。

很多不完善的地方,比如锁定用户,同一用户输入错三次密码就会锁定,但是如果在第二第三次换了用户再输入原来的用户,则计数会重新计算。

另外不存在的用户输入密码错误次数过多也会被锁定,然后还能创建一个被锁定的用户,这个就不搞了,只要检测一下是否存在用户名就可以了。

暂时想到了解决办法是在一个专用的文件里面增加一个专用的计数变量,舍弃blocklist这个文件,但是不懂怎么操作,先留着。

虽然python没有像C一样的main函数作为程序入口,姑且弄了一个,方便看懂

'''登陆系统
要求:
1、可以选择创建新的用户
2、可以登陆原有的用户
3、输入密码错误三次后用户则被锁定'''
 
flag=True #循环控制符
 
def createuser():
  f=open('userlist.txt','r')#打开已存在用户的文件,假设文件已经存在
  flag=True
  name=f.readlines()
  f.close()
  while flag:
    username=input('username:')
    flag2=False#用户名已存在的标记符
    for line in name:
      if(username==line.split('*')[0]):
        flag2=True
        print("用户名已存在,请重新输入")
    if flag2!=True:
      f=open('userlist.txt','a')#创建新的用户
      f.write('\n'+username)
      f.write('*')
      password=input('password:')
      f.write(password)
      f.close()
      break
  main()
 
 
def login():#登入函数,输入密码错误三次则锁定用户
  count=0#密码错误计数,3次则锁定
  f=open('userlist.txt','r')
  info=f.readlines()
  f.close()
  user=None#重复用户标记符
  while flag:
    flag2=False
    f2=open('blocklist.txt', 'r')
    block_name=f2.readlines()
    f2.close()
    username=input('username:')
    if user==None:#user没有使用过,则直接赋予输入的用户名
      user=username
    elif user!=username:#如果下一次输入的用户名不一样,则记录上一次的用户名,同时计数清零
      user=username
      count=0;
    for line in block_name:#检查用户名是否被锁定,锁定则返回主菜单
      if username==line.strip('\n'):
        print('该用户已经被锁定,请联系管理员')
        main()
    password=input('password:')
    for line in info:
      if(username==line.split('*')[0]and password==line.split('*')[1].strip('\n')):
        print('登入成功!')
        flag2=True
    if flag2==False:
      count+=1
      print("用户名或密码错误,请重新输入")
    if count==3:#错误三次,把用户名添加到锁定列表中
      print('密码错误次数过多,该用户已被锁定')
      f3=open('blocklist.txt','a')
      f3.write('\n'+username)
      f3.close()
      count=0#加入黑名单后重置计数
      main()#加入黑名单后退回主菜单
info='''
------请输入相关数字-----
1.创建新的用户
2.登陆已有用户
3.退出程序
'''
 
def main():
  print(info)
  while flag:
    i=input()
    if i=='1':
      createuser()
      break
    elif i=='2':
      login()
      break
    elif i=='3':
      exit()
    else:
      print("请输入正确的数字.")
 
main()#程序入口

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python连接池实现示例程序
Nov 26 Python
python中使用urllib2获取http请求状态码的代码例子
Jul 07 Python
简单谈谈Python流程控制语句
Dec 04 Python
python flask中静态文件的管理方法
Mar 20 Python
解决python3 urllib 链接中有中文的问题
Jul 16 Python
树莓派+摄像头实现对移动物体的检测
Jun 22 Python
Python实用工具FuckIt.py介绍
Jul 02 Python
使用PYTHON解析Wireshark的PCAP文件方法
Jul 23 Python
python pygame实现球球大作战
Nov 25 Python
python软件都是免费的吗
Jun 18 Python
python输出国际象棋棋盘的实例分享
Nov 26 Python
python 实现图片裁剪小工具
Feb 02 Python
Python字典中的键映射多个值的方法(列表或者集合)
Oct 17 #Python
python字典值排序并取出前n个key值的方法
Oct 17 #Python
Python中创建二维数组
Oct 17 #Python
解决Python获取字典dict中不存在的值时出错问题
Oct 17 #Python
Python3.6简单的操作Mysql数据库的三个实例
Oct 17 #Python
解决python中遇到字典里key值为None的情况,取不出来的问题
Oct 17 #Python
使用Python实现在Windows下安装Django
Oct 17 #Python
You might like
PHP UTF8编码内的繁简转换类
2009/07/20 PHP
PHP判断一个数组是另一个数组子集的方法详解
2017/07/31 PHP
javascript操作文本框readOnly
2007/05/15 Javascript
javascript入门·图片对象(无刷新变换图片)\滚动图像
2007/10/01 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
vue.js开发环境安装教程
2017/03/17 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
2018/09/16 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
JS控制GIF图片的停止与显示
2019/10/24 Javascript
jQuery实现的解析本地 XML 文档操作示例
2020/04/30 jQuery
JavaScript通如何过RGraph实现动态仪表盘
2020/10/15 Javascript
最大K个数问题的Python版解法总结
2016/06/16 Python
Python实现随机生成有效手机号码及身份证功能示例
2017/06/05 Python
Python判断两个对象相等的原理
2017/12/12 Python
Python实现图片尺寸缩放脚本
2018/03/10 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
2018/04/10 Python
Django 多环境配置详解
2019/05/14 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
python Matplotlib模块的使用
2020/09/16 Python
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
送给他或她的礼物:FUN.com
2018/08/17 全球购物
几个常见的软件测试问题
2016/09/07 面试题
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
地下停车场租赁协议范本
2014/10/07 职场文书
旷课检讨书500字
2014/10/14 职场文书
银行给客户的感谢信
2015/01/23 职场文书
2015年数学教研组工作总结
2015/05/23 职场文书
拯救大兵瑞恩观后感
2015/06/09 职场文书
民事调解协议书
2016/03/21 职场文书
不要在HTML中滥用div
2021/05/08 HTML / CSS
解决linux下redis数据库overcommit_memory问题
2022/02/24 Redis