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素数检测实例分析
Jun 15 Python
Python编程实现二叉树及七种遍历方法详解
Jun 02 Python
示例详解Python3 or Python2 两者之间的差异
Aug 23 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
Dec 27 Python
Python常用特殊方法实例总结
Mar 22 Python
pyqt5移动鼠标显示坐标的方法
Jun 21 Python
python求加权平均值的实例(附纯python写法)
Aug 22 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
Jan 14 Python
python中time、datetime模块的使用
Dec 14 Python
Python用access判断文件是否被占用的实例方法
Dec 17 Python
Python机器学习实战之k-近邻算法的实现
Nov 27 Python
django中websocket的具体使用
Jan 22 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本地服务器分享
2013/02/19 PHP
PHP借助phpmailer发送邮件
2015/05/11 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
php结合web uploader插件实现分片上传文件
2016/05/10 PHP
CI框架实现框架前后端分离的方法详解
2016/12/30 PHP
ThinkPHP实现的rsa非对称加密类示例
2018/05/29 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
2020/05/14 PHP
Yii框架小部件(Widgets)用法实例详解
2020/05/15 PHP
js获取时间并实现字符串和时间戳之间的转换
2015/01/05 Javascript
原生js实现日期联动
2015/01/12 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
JS清除字符串中重复值的实现方法
2016/08/03 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
2016/12/31 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
Angular网络请求的封装方法
2018/05/22 Javascript
讲解vue-router之什么是编程式路由
2018/05/28 Javascript
jQuery实现ajax回调函数带入参数的方法示例
2018/06/26 jQuery
JavaScript强制类型转换和隐式类型转换操作示例
2019/05/01 Javascript
Django+Vue实现WebSocket连接的示例代码
2019/05/28 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
跟老齐学Python之模块的加载
2014/10/24 Python
python pycurl验证basic和digest认证的方法
2018/05/02 Python
Redis使用watch完成秒杀抢购功能的代码
2018/05/07 Python
Django实现网页分页功能
2019/10/31 Python
python字符串,元组,列表,字典互转代码实例详解
2020/02/14 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
HolidayLettings英国:预订最好的度假公寓、别墅和自助式住宿
2019/08/27 全球购物
法国春天百货官网:Printemps.com
2020/06/29 全球购物
英文版销售经理个人求职信
2013/11/20 职场文书
少年闰土教学反思
2014/02/22 职场文书
《东方明珠》教学反思
2014/04/20 职场文书
大学校园招聘会感想
2015/08/10 职场文书
MySQL连接控制插件介绍
2021/09/25 MySQL
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers