python实现简单登陆系统

yipeiwu_com5年前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设计】。

相关文章

详解Django admin高级用法

使用Django意味着后台框架的几乎所有内容都会和Django产生互动,排除功能全部手撸的情况. Django 后台admin有大量的属性和方法,拥有强大的功能和自定义能力.通过完整的代...

Python+Wordpress制作小说站

我用Python和Wordpress建了一个小说站。 下面主要讲一讲搭建过程中所用的技术。主要分为以下几个部分: Wordpress主题的选取 小说内容的完善 站点的部署...

Python解析命令行读取参数之argparse模块

在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数。万能的python就自带了argprase包 使得这一工作变得简单而规范。PS:optpars...

Python中使用PIL库实现图片高斯模糊实例

Python中使用PIL库实现图片高斯模糊实例

一、安装PIL PIL是Python Imaging Library简称,用于处理图片。PIL中已经有图片高斯模糊处理类,但有个bug(目前最新的1.1.7bug还存在),就是模糊半径写...

python将xml xsl文件生成html文件存储示例讲解

前提:安装libxml2 libxstl 官方网站:http://xmlsoft.org/XSLT/index.html 安装包下载:http://xmlsoft.org/sources...