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彩色化Linux的命令行终端界面的代码实例分享
Jul 02 Python
深入理解Python3中的http.client模块
Mar 29 Python
python机器学习之神经网络(二)
Dec 20 Python
点球小游戏python脚本
May 22 Python
python 移除字符串尾部的数字方法
Jul 17 Python
Python实现字典按key或者value进行排序操作示例【sorted】
May 03 Python
解决python super()调用多重继承函数的问题
Jun 26 Python
对python特殊函数 __call__()的使用详解
Jul 02 Python
pyqt5数据库使用详细教程(打包解决方案)
Mar 25 Python
通过实例解析Python RPC实现原理及方法
Jul 07 Python
Python爬虫基础讲解之请求
May 13 Python
Python编程中Python与GIL互斥锁关系作用分析
Sep 15 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
模仿OSO的论坛(四)
2006/10/09 PHP
PHP的分页功能
2007/03/21 PHP
php 伪造本地文件包含漏洞的代码
2011/11/03 PHP
PHP中source #N问题的解决方法
2014/01/27 PHP
smarty中js的调用方法示例
2014/10/27 PHP
php更新mysql后获取改变行数的方法
2014/12/25 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
2015/12/02 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
2016/03/07 PHP
jQuery插件animateSlide制作多点滑动幻灯片
2015/06/11 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
2015/06/26 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
JS+CSS实现简单滑动门(滑动菜单)效果
2015/09/19 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
js关于getImageData跨域问题的解决方法
2016/10/14 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
2020/11/24 Javascript
浅谈Node 异步IO和事件循环
2019/05/05 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
2019/07/19 Javascript
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
python进阶教程之函数对象(函数也是对象)
2014/08/30 Python
Python的面向对象编程方式学习笔记
2016/07/12 Python
Python实现的栈、队列、文件目录遍历操作示例
2019/05/06 Python
解析python实现Lasso回归
2019/09/11 Python
pytorch之Resize()函数具体使用详解
2020/02/27 Python
Python Switch Case三种实现方法代码实例
2020/06/18 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
增大python字体的方法步骤
2020/07/05 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
卡拉威高尔夫官方网站:Callaway Golf
2020/09/16 全球购物
JPA的特点
2014/10/25 面试题
文明学生标兵事迹
2014/01/21 职场文书
出国留学担保书
2014/05/20 职场文书
成本会计实训报告
2014/11/05 职场文书
优秀教师申报材料
2014/12/16 职场文书
学生党支部工作总结2015
2015/05/26 职场文书
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python