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脚本批量下载DesktopNexus壁纸的教程
May 06 Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
May 28 Python
Python set常用操作函数集锦
Nov 15 Python
python解析含有重复key的json方法
Jan 22 Python
用python3 返回鼠标位置的实现方法(带界面)
Jul 05 Python
Python实现一个数组除以一个数的例子
Jul 20 Python
Pytorch Tensor 输出为txt和mat格式方式
Jan 03 Python
pytorch实现mnist分类的示例讲解
Jan 10 Python
深入理解Python 多线程
Jun 16 Python
python 爬虫爬取京东ps4售卖情况
Dec 18 Python
关于Python中*args和**kwargs的深入理解
Aug 07 Python
Python编写车票订购系统 Python实现快递收费系统
Aug 14 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中上传大体积文件时需要的设置
2006/10/09 PHP
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
第三章 php操作符与控制结构代码
2011/12/30 PHP
PHP语言中global和$GLOBALS[]的分析 之二
2012/02/02 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
js 弹出菜单/窗口效果
2011/10/30 Javascript
JavaScript高级程序设计(第3版)学习笔记 概述
2012/10/11 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
2017/05/08 Javascript
原生JS实现Ajax跨域请求flask响应内容
2017/10/24 Javascript
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
2020/08/25 Javascript
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
python实现数通设备端口监控示例
2014/04/02 Python
Python入门篇之字典
2014/10/17 Python
Python字典简介以及用法详解
2016/11/15 Python
tf.truncated_normal与tf.random_normal的详细用法
2018/03/05 Python
python pandas中DataFrame类型数据操作函数的方法
2018/04/08 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
Pytorch转onnx、torchscript方式
2020/05/25 Python
Selenium环境变量配置(火狐浏览器)及验证实现
2020/12/07 Python
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
Carolina工作鞋官网:Carolina Footwear
2019/03/14 全球购物
大学毕业生自荐书怎么写?
2014/01/06 职场文书
田径运动会开幕式及主持词
2014/03/28 职场文书
珍惜时间演讲稿
2014/05/14 职场文书
施工工地安全标语
2014/06/07 职场文书
2015年音乐教研组工作总结
2015/07/22 职场文书
PHP中多字节字符串操作实例详解
2021/08/23 PHP
深入解析MySQL索引数据结构
2021/10/16 MySQL
Lakehouse数据湖并发控制陷阱分析
2022/03/31 Oracle