python实现简单登陆系统

 更新时间:2018年10月18日 08:33:30   作者:zerolouise  
这篇文章主要为大家详细介绍了python实现简单登陆系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

新手,虽然比较简单的东西,但是弄了我很久。

很多不完善的地方,比如锁定用户,同一用户输入错三次密码就会锁定,但是如果在第二第三次换了用户再输入原来的用户,则计数会重新计算。

另外不存在的用户输入密码错误次数过多也会被锁定,然后还能创建一个被锁定的用户,这个就不搞了,只要检测一下是否存在用户名就可以了。

暂时想到了解决办法是在一个专用的文件里面增加一个专用的计数变量,舍弃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魔术方法详解

    这篇文章主要介绍了Python魔术方法详解,本文讲解了构造和初始化、用于比较的魔术方法、数值处理的魔术方法、普通算数操作符等内容,需要的朋友可以参考下
    2015-02-02
  • python3字符串输出常见面试题总结

    python3字符串输出常见面试题总结

    在本篇文章里小编给大家整理的是一篇关于python3字符串输出常见面试题总结内容,有需要的朋友们可以参考下。
    2020-12-12
  • Python实现的选择排序算法原理与用法实例分析

    Python实现的选择排序算法原理与用法实例分析

    这篇文章主要介绍了Python实现的选择排序算法,简单描述了选择排序的原理,并结合实例形式分析了Python实现与应用选择排序的具体操作技巧,需要的朋友可以参考下
    2017-11-11
  • Python学习之shell脚本的使用详解

    Python学习之shell脚本的使用详解

    这篇文章主要为大家分析一个python库–sh(系统调用),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下
    2023-04-04
  • Python+KgCaptcha实现验证码的开发详解

    Python+KgCaptcha实现验证码的开发详解

    验证码通常是为了区分用户是人还是计算机,也可以防止解开密码等恶意行为,而客户端上多数会用在关键操作上。现在验证码的种类样式也特别多,本文主要介绍了如何用Python和KgCaptcha做出验证码功能,需要的可以参考一下
    2023-04-04
  • 简单的通用表达式求10乘阶示例

    简单的通用表达式求10乘阶示例

    这篇文章主要介绍了简单的通用表达式求10乘阶示例,需要的朋友可以参考下
    2014-03-03
  • 基于Python实现条形码图片识别程序

    基于Python实现条形码图片识别程序

    这篇文章主要为大家详细介绍了如何基于Python实现一个简单的条形码图片识别程序,可以视频图片中的条形码,感兴趣的小伙伴可以跟随小编学习一下
    2023-09-09
  • 浅谈pytorch中为什么要用 zero_grad() 将梯度清零

    浅谈pytorch中为什么要用 zero_grad() 将梯度清零

    这篇文章主要介绍了pytorch中为什么要用 zero_grad() 将梯度清零的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算

    python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算

    这篇文章主要介绍了python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Windows平台Python连接sqlite3数据库的方法分析

    Windows平台Python连接sqlite3数据库的方法分析

    这篇文章主要介绍了Windows平台Python连接sqlite3数据库的方法,结合实例形式分析了Windows平台安装SQLite数据库及创建、连接数据库的实现方法与相关注意事项,需要的朋友可以参考下
    2017-07-07

最新评论