python实现简单登陆系统

作者:zerolouise 时间:2023-05-25 06:50:49 

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

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

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

暂时想到了解决办法是在一个专用的文件里面增加一个专用的计数变量,舍弃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()#程序入口

来源:https://blog.csdn.net/zerolouise/article/details/79586201?utm_source=blogxgwz5

标签:python,登陆系统
0
投稿

猜你喜欢

  • 10分钟搞定让你困惑的 Jenkins 环境变量过程详解

    2023-09-23 13:56:03
  • JS获取页面窗口实际大小函数

    2008-01-28 13:18:00
  • 如何尽快释放掉Connection对象建立的连接?

    2009-12-16 18:38:00
  • 详解SQL Server数据库架构和对象、定义数据完整性

    2024-01-23 06:48:16
  • Excel数据导入到Access,Sql Server中示例代码

    2007-10-07 12:03:00
  • python同步两个文件夹下的内容

    2022-09-14 13:54:13
  • 边框样式的写法总结

    2009-01-18 13:00:00
  • 阿里大于短信验证码node koa2的实现代码(最新)

    2024-05-09 14:50:36
  • 浅谈Python中用datetime包进行对时间的一些操作

    2022-09-27 09:32:14
  • Django学习笔记之Class-Based-View

    2023-09-07 15:37:25
  • Python实战之基于OpenCV的美颜挂件制作

    2022-08-30 20:46:30
  • webpack5的entry和output配置小白学习

    2024-04-30 09:52:08
  • Numpy np.array()函数使用方法指南

    2023-05-23 09:33:37
  • 基于Python编写一个简单的http服务器

    2022-04-08 21:07:39
  • laravel的用户修改密码与绑定邮箱的详细操作

    2023-06-17 09:55:06
  • 详解MySQL数据类型int(M)中M的含义

    2024-01-14 03:07:05
  • 如何基于Python深度图生成3D点云详解

    2022-03-08 16:41:11
  • 使用Python的Treq on Twisted来进行HTTP压力测试

    2023-01-26 22:29:28
  • Quickwork For Asp -实战之后台管理

    2009-12-31 19:13:00
  • 关于设计的六个误会

    2008-06-26 18:18:00
  • asp之家 网络编程 m.aspxhome.com