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可变参数函数用法实例
Jul 07 Python
Python守护进程和脚本单例运行详解
Jan 06 Python
python的多重继承的理解
Aug 06 Python
使用Python写一个小游戏
Apr 02 Python
Python数据结构之哈夫曼树定义与使用方法示例
Apr 22 Python
Python中的groupby分组功能的实例代码
Jul 11 Python
Python类装饰器实现方法详解
Dec 21 Python
Python函数定义及传参方式详解(4种)
Mar 18 Python
利用python计算时间差(返回天数)
Sep 07 Python
python动态文本进度条的实例代码
Jan 22 Python
Scrapy中如何向Spider传入参数的方法实现
Sep 28 Python
python中K-means算法基础知识点
Jan 25 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绘制一个矩形的方法
2015/01/24 PHP
PHP判断IP并转跳到相应城市分站的方法
2015/03/25 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
2020/01/22 PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
2020/11/27 PHP
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
jquery的ajax跨域请求原理和示例
2014/05/08 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
ionic实现底部分享功能
2017/05/11 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
深入了解Hybrid App技术的相关知识
2019/07/17 Javascript
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
vue - vue.config.js中devServer配置方式
2019/10/30 Javascript
[02:17]DOTA2亚洲邀请赛 RAVE战队出场宣传片
2015/02/07 DOTA
pycharm中连接mysql数据库的步骤详解
2017/05/02 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
pandas去除重复列的实现方法
2019/01/29 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
浅谈css3中的前缀
2016/07/20 HTML / CSS
HTML5本地存储和本地数据库实例详解
2017/09/05 HTML / CSS
希尔顿酒店官方网站:Hilton Hotels
2017/06/01 全球购物
英国领先的电视购物零售商:Ideal World
2019/03/18 全球购物
英国DIY汽车维修配件网站:DIY Car Service Parts
2019/08/30 全球购物
留学推荐信怎么写
2014/01/25 职场文书
2015年春节标语口号
2014/12/09 职场文书
2014年基建工作总结
2014/12/12 职场文书
毕业晚宴祝酒词
2015/08/11 职场文书
2016年教师节感言
2015/12/09 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技