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如何在终端里面显示一张图片
Aug 17 Python
Python的装饰器使用详解
Jun 26 Python
Python递归实现汉诺塔算法示例
Mar 19 Python
pandas数据清洗,排序,索引设置,数据选取方法
May 18 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
Dec 04 Python
python的pygal模块绘制反正切函数图像方法
Jul 16 Python
Flask框架学习笔记之使用Flask实现表单开发详解
Aug 12 Python
Python 音频生成器的实现示例
Dec 24 Python
python实现密码强度校验
Mar 18 Python
解决flask接口返回的内容中文乱码的问题
Apr 03 Python
Jupyter notebook如何实现指定浏览器打开
May 13 Python
Python调用Redis的示例代码
Nov 24 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 仿Comsenz安装效果代码打包提供下载
2010/05/09 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
php操纵mysqli数据库的实现方法
2016/09/18 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
jQuery响应enter键的实现思路
2014/04/18 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
javascript检查浏览器是否已经启用XX功能
2015/07/10 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
详解javascript中的事件处理
2015/11/06 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
详解nodejs微信公众号开发——6.自定义菜单
2017/04/13 NodeJs
vue配置请求本地json数据的方法
2018/04/11 Javascript
vue 点击按钮增加一行的方法
2018/09/07 Javascript
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
2018/07/19 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
2018/09/13 Python
使用python根据端口号关闭进程的方法
2018/11/06 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
Python获取二维数组的行列数的2种方法
2020/02/11 Python
Python生成器实现简单"生产者消费者"模型代码实例
2020/03/27 Python
django正续或者倒序查库实例
2020/05/19 Python
Python 忽略文件名编码的方法
2020/08/01 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
2020/11/24 Python
前端使用canvas生成盲水印的加密解密的实现
2020/12/16 HTML / CSS
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
邮政竞聘演讲稿
2014/09/03 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
党建工作汇报材料
2014/12/24 职场文书
刑事附带民事代理词
2015/05/25 职场文书
2015年市场营销工作总结
2015/07/23 职场文书
html5实现点击弹出图片功能
2021/07/16 HTML / CSS