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自动翻译实现方法
May 28 Python
python3实现基于用户的协同过滤
May 31 Python
Python面向对象总结及类与正则表达式详解
Apr 18 Python
Python3之不使用第三方变量,实现交换两个变量的值
Jun 26 Python
Python简易版停车管理系统
Aug 12 Python
django项目中新增app的2种实现方法
Apr 01 Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 Python
python对接ihuyi实现短信验证码发送
May 10 Python
浅谈django channels 路由误导
May 28 Python
如何导出python安装的所有模块名称和版本号到文件中
Jun 05 Python
sqlalchemy实现时间列自动更新教程
Sep 02 Python
Python3的进程和线程你了解吗
Mar 16 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中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
2014/06/23 PHP
php实现购物车功能(上)
2020/07/23 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
2016/04/04 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
Zend Framework入门教程之Zend_Session会话操作详解
2016/12/08 PHP
php实现简易计算器
2020/08/28 PHP
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
jquery实现点击变换导航样式的方法
2015/08/31 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
第四篇Bootstrap网格系统偏移列和嵌套列
2016/06/21 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
JS实现百度搜索接口及链接功能实例代码
2018/02/02 Javascript
Vue.js组件高级特性实例详解
2018/12/24 Javascript
vue组件化中slot的基本使用方法
2019/05/01 Javascript
原生js实现each方法实例代码详解
2019/05/27 Javascript
简述pm2常用命令集合及配置文件说明
2019/05/30 Javascript
如何解决js函数防抖、节流出现的问题
2019/06/17 Javascript
Python高效编程技巧
2013/01/07 Python
浅谈python中requests模块导入的问题
2018/05/18 Python
解决keras使用cov1D函数的输入问题
2020/06/29 Python
Python如何合并多个字典或映射
2020/07/24 Python
python中numpy数组与list相互转换实例方法
2021/01/29 Python
卡西欧B级产品官方网站:Casio Outlet
2018/05/22 全球购物
经济学博士求职自荐信范文
2013/11/23 职场文书
生物技术专业毕业生求职信范文
2013/12/14 职场文书
护士思想汇报
2014/01/12 职场文书
不遵守课堂纪律的检讨书
2014/09/24 职场文书
2016年第二十五次全国助残日活动总结
2016/04/01 职场文书
python图片灰度化处理的几种方法
2021/06/23 Python
关于Python中进度条的六个实用技巧分享
2022/04/05 Python
Go语言入门exec的基本使用
2022/05/20 Golang