python登录系统的实现方法_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加载图片的方法_python从网络读取图片并直接进行处理的方法
python从网络读取图片并直接进行处理的方法 更新时间:2015年05月22日 10:09:08 作者:pythoner 这篇文章主要介绍了python从网络读取图片并直接进行处理的方法,涉及cSt ...
- vscode怎么配置python运行环境f5_VSCode下配置python调试运行环境的方法_python
这篇文章主要介绍了VSCode下配置python调试运行环境的方法,需要的朋友可以参考下 VSCode配置python调试环境 很久之前的一个东东,翻出来看看VSCode配置python调试环境 * ...
- python定义私有变量的方法_Python类中的 私有变量和私有方法
默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似public,private等关键词来修饰成员函数和成员变量. 在python中定义私有变量只需要在变 ...
- python编程超市购物系统_python实现简单购物车系统(练习)
#!Anaconda/anaconda/python#coding: utf-8 #列表练习,实现简单购物车系统 product_lists= [('iphone',5000), ('computer ...
- python定义私有变量的方法_Python怎么修改私有属性 如何访问python类中的私有方法...
python 类为什么不能定义私有属性和方法 因为b.name[0] = 'zhang'修改的是类属性,类属性是全局的,所有的实例共享,如果想私有化,可以添加 def __init__( self ) ...
- python七夕快乐_python编写简单抽奖系统
python编写简单抽奖系统 #!/usr/bin/env python #coding=utf-8 from Tkinter import * import time import random c ...
- python中列表的sort方法_python中列表的sort方法使用详解
内容简介:python中列表的sort方法使用详解 一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的. 排序,数字.字符 ...
- python导入pandas具体步骤方法_python导入pandas具体步骤方法
Pandas最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持. Pandas的名称来自于面板数据(panel data)和python数据分析(data anal ...
- python爬虫十二种方法_Python爬虫的N种姿势
问题的由来 前几天,在微信公众号(Python爬虫及算法)上有个人问了笔者一个问题,如何利用爬虫来实现如下的需求,需要爬取的网页如下(网址为:https://www.wikidata.org/w/in ...
最新文章
- idea Debug快捷键
- 怎么从github上下载一个vue项目在本地运行
- 介绍SLICEM里的LUT如何形成RAM资源
- [物理学与PDEs]第3章习题1 只有一个非零分量的磁场
- bzoj2806: [Ctsc2012]Cheat
- 11月中30个精心设计的网站案例精选
- 【Pytorch神经网络理论篇】 05 Module类的使用方法+参数Parameters类+定义训练模型的步骤与方法
- 信息学奥赛一本通 1890:【15NOIP提高组】跳石头 | 洛谷 P2678 [NOIP2015 提高组] 跳石头
- PyQt5-QTextEdit控件使用
- cocos2d-iphone 3.X 进度条的实现
- 英语总结系列(九):百忙中依然坚持的九月
- Confluence 空间附件(Attachments )宏
- 关于 Android 的 OMA DRM 验证
- java pdf 富文本_Java生成pdf,兼富文本
- (*长期更新)软考网络工程师学习笔记——Section 13 Linux网络配置命令
- 用python实现监听微信撤回消息
- 参考文献格式字号字体_论文格式的字体字号要求?
- Java中调整字距与行距的方法 其一(以DrawString为例)
- JavaScript面试精讲(六)——说说你经常使用到的array方法
- CNAS发布最新实验室认可规则以及实验室管理体系准则
热门文章
- Qt工作笔记-QDialog模式对话框传递数据给主窗口
- html出现403错误信息,网站(HTTP)出现403错误集锦,请对号入座;
- p怎么调用python的实例属性_Python中类的声明,使用,属性,实例属性,计算属性及继承,重写...
- dd命令快速生成一个大文件
- 超级计算机子系统,大规模并行巨型机的并行I/O子系统
- 黑客必须了解的网络知识
- numpy的常用函数 不断更新
- USACO-Section2.2 Subset Sums
- Dedecms 最新版漏洞收集并复现学习
- Redis Flushall 命令