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引用(import)文件夹下的py文件的方法
Aug 26 Python
python下读取公私钥做加解密实例详解
Mar 29 Python
解决python读取几千万行的大表内存问题
Jun 26 Python
对Python random模块打乱数组顺序的实例讲解
Nov 08 Python
python装饰器简介---这一篇也许就够了(推荐)
Apr 01 Python
详解如何用TensorFlow训练和识别/分类自定义图片
Aug 05 Python
python机器学习实现决策树
Nov 11 Python
pygame编写音乐播放器的实现代码示例
Nov 19 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
Nov 10 Python
如何用python写个模板引擎
Jan 14 Python
django使用多个数据库的方法实例
Mar 04 Python
详解运行Python的神器Jupyter Notebook
Jun 03 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
一个SQL管理员的web接口
2006/10/09 PHP
php调用mysql存储过程实例分析
2014/12/29 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
在Laravel中使用DataTables插件的方法
2018/05/29 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
Jquery:ajax实现翻页无刷新功能代码
2013/08/05 Javascript
js document.write()使用介绍
2014/02/21 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
在JavaScript中操作时间之setYear()方法的使用
2015/06/12 Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
2015/10/30 Javascript
JavaScript数组去重的几种方法效率测试
2016/10/23 Javascript
3种不同的ContextMenu右键菜单实现代码
2016/11/03 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
2017/03/11 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
全面解析JavaScript Module模式
2020/07/24 Javascript
如何利用nodejs自动定时发送邮件提醒(超实用)
2020/12/01 NodeJs
原生JavaScript实现随机点名表
2021/01/14 Javascript
python远程登录代码
2008/04/29 Python
python中字符串类型json操作的注意事项
2017/05/02 Python
Python数据分析之双色球中蓝红球分析统计示例
2018/02/03 Python
python实现微信定时每天和女友发送消息
2019/04/29 Python
Django集成celery发送异步邮件实例
2019/12/17 Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
2020/03/25 Python
详解python日志输出使用配置文件格式
2021/02/10 Python
CSS3实现的渐变幻灯片效果
2020/12/07 HTML / CSS
经济信息管理专业大学生求职信
2013/09/27 职场文书
ktv好的活动方案
2014/08/15 职场文书
夏季药店促销方案
2014/08/22 职场文书
基层干部个人对照检查及整改措施
2014/10/28 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers