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脚本
Feb 10 Python
详解Python中的__getitem__方法与slice对象的切片操作
Jun 27 Python
Python标准库06之子进程 (subprocess包) 详解
Dec 07 Python
Python合并多个Excel数据的方法
Jul 16 Python
python 对key为时间的dict排序方法
Oct 17 Python
python如何保证输入键入数字的方法
Aug 23 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
Feb 07 Python
在Python中通过threshold创建mask方式
Feb 19 Python
如何利用python web框架做文件流下载的实现示例
Jun 02 Python
Python析构函数__del__定义原理解析
Nov 20 Python
SpringBoot首页设置解析(推荐)
Feb 11 Python
Python turtle实现贪吃蛇游戏
Jun 18 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
CodeIgniter生成网站sitemap地图的方法
2013/11/13 PHP
PHP常用正则表达式集锦
2014/08/17 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
2020/01/23 PHP
[HTML/CSS/Javascript]WWTJS
2007/09/25 Javascript
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
JQuery防止退格键网页后退的实现代码
2012/03/23 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
JavaScript中的对象的extensible属性介绍
2014/12/30 Javascript
html5+javascript实现简单上传的注意细节
2016/04/18 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
2016/05/25 Javascript
终于实现了!精彩的jquery弹幕效果
2016/07/18 Javascript
js实现String.Fomat的实例代码
2016/09/02 Javascript
在JavaScript中调用Java类和接口的方法
2016/09/07 Javascript
详解JavaScript中数组的reduce方法
2016/12/02 Javascript
jQuery中map函数的两种方式
2017/04/07 jQuery
使用jQuery实现鼠标点击左右按钮滑动切换
2017/08/04 jQuery
vue-baidu-map 进入页面自动定位的解决方案(推荐)
2018/04/28 Javascript
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
angular6 填坑之sdk的方法
2018/12/27 Javascript
简单了解JavaScript arguement原理及作用
2020/05/28 Javascript
简述Python中的面向对象编程的概念
2015/04/27 Python
Django imgareaselect手动剪切头像实现方法
2015/05/26 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
Python Scapy随心所欲研究TCP协议栈
2018/11/20 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
2020/05/03 Python
意大利在线眼镜精品店:Ottica Lipari
2019/11/11 全球购物
安全生产责任书
2014/03/12 职场文书
2014年司法所工作总结
2014/11/22 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
入党积极分子个人总结
2015/03/02 职场文书
食品质检员岗位职责
2015/04/08 职场文书
MySQL外键约束(FOREIGN KEY)案例讲解
2021/08/23 MySQL
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis