一、需求
编写登录接口
1.输入用户名密码
2.认证成功后显示欢迎信息
3.输错三次后锁定 二、简单思路
登录,三次密码输入错误锁定用户
1.用户信息文件:存放用户名和密码
2.黑名单文件:将输入三次错误的用户加入此名单,加入此名单的用户将不允许登录 三、具体实现
第一步:在黑名单里检测是否有此用户,如果有则不让登录
第二步:用户名和密码判定 四、代码
count = 0   #记录用户输入密码的次数
flag = 1 #标志位
lock = []
user_pass = []
username = input('please input your name:') #读取黑名单的内容
f = open('black_mingdan','r')
lock_file = f.readlines()
f.close()
#将黑名单文件内容作为列表元素追加到列表中
for i in lock_file:
line = i.strip('\n')
lock.append(line) #若输入的用户名在黑名单中,如果在则给出提示信息:用户已经被锁定,请联系管理员。
if username in lock:
print('User %s Have Been Locked.It is not allow to login,please contact Administrator.' %username)
else:
#输入的用户名不在黑名单中,则提示用户输入密码信息
while True:
count += 1
passwd = input("please input your password:")
f = open('user_information','r')
user_file = f.readlines()
f.close()
for i in user_file:
user_pass = i.strip().split()
#判断输入的用户名==user_pass[0] and 密码==user_pass[1],如果相等,则提示欢迎信息并退出循环,如果不相等则
#结束本次循环
if username == user_pass[0] and passwd == user_pass[1]:
print('welcome user %s login !' %username)
flag = True
break
else:
continue
#若flag为真,则用户名和密码输入正确跳出整个循环体,反之,若用户输入密码错误的次数为3,则给出提示信息:用户已经被锁定
#并将username追加到黑名单中
if flag is True:
break
else:
if count == 3:
print('User Have Been try 3 times,Have Been Locked')
lock_file = open('black_mingdan','a')
#lock_file.write('Have Been Locked User:%s\n' %username)
lock_file.write('%s\n' %username)
lock_file.close()
break

程序执行结果如下:

[root@MiWiFi-R1CM-srv homework]# python3 denglu.py
please input your name:zhangsan
please input your password:123
welcome user zhangsan login !
[root@MiWiFi-R1CM-srv homework]# python3 denglu.py
please input your name:zhangsan
please input your password:098
please input your password:678
please input your password:543
User Have Been try 3 times,Have Been Locked
[root@MiWiFi-R1CM-srv homework]# python3 denglu.py
please input your name:zhangsan
User zhangsan Have Been Locked.It is not allow to login,please contact Administrator.
[root@MiWiFi-R1CM-srv homework]# cat black_mingdan
zhangsan

python 循环和file操作实现用户密码输错三次将用户锁定的更多相关文章

  1. python 循环使用 while 或 for 语句实现用户名密码输错三次退出

    如有错误欢迎大家指出,新手初来乍到.程序没那么复杂,是最简单的. 一.需求 编写登录文件 .py1. 输入用户名密码2. 正确,输出欢迎登录3. 当输入用户名和密码小于 3 次,输入用户名或者密码错误 ...

  2. Python3.5 Day1作业:实现用户密码登录,输错三次锁定。

    作业需求: 1.输入用户名密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 实现思路: 1.判断用户是否在黑名单,如果在黑名单提示账号锁定. 2.判断用户是否存在,如果不存在提示账号不存在. 3. ...

  3. python学习-实现用户密码登录,输错三次锁定

    作业需求: 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 实现思路: 判断用户是否在黑名单,若在黑名单,则将用户锁定 判断用户是否存在,若不存在,提示用户不存在 若用户存在,判断登录密码是否 ...

  4. python作业设计:输入用户名密码,认证成功后显示欢迎信息,输错三次后锁定

    作业需求: 1.输入用户名密码 2.认证成功后显示欢迎信息 3.输错三次后锁定实现思路: 1.判断用户是否在黑名单,如果在黑名单提示账号锁定. 2.判断用户是否存在,如果不存在提示账号不存在. 3.判 ...

  5. python 小程序,输错三次密码锁定账户

    [root@sun ~]# cat 7.py #!/usr/bin/python # -*- coding=UTF-8 -*- usera_name = 'usera' usera_passwd = ...

  6. python3 登录验证小程序,同一用户输错三次密码,锁定账户

    ''' 让用户输入用户名密码 认证成功后显示欢迎信息用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态''' # !/usr/bin/env python # -*- coding:u ...

  7. squid+stunnel+用户密码认证的三种玩法

    没办法,应用越来越深入,就会越来越多要求. squid+stunnel+用户密码认证的场景至少以下三个,我会遇到. 1,标准玩法 在服务器上建一个SQUID,加密码认证,然后,其它人通过它上网.(不要 ...

  8. mysql5.7.18.1修改用户密码报错ERROR 1054 (42S22): Unknown column 'password' in 'field list'解决办法

    本意向修改一个用户的密码,网上搜到的命令为如下 mysql> update user set password=password(“新密码”) where user=”用户名”; 执行后报错 E ...

  9. linux系统修改用户密码报错

    版权声明:本文为博主原创文章,支持原创,转载请附上原文出处链接和本声明. 本文地址:https://www.cnblogs.com/wannengachao/p/12069113.html 1.设置新 ...

随机推荐

  1. JS笔记(一)

    第一章: 编写JS流程: 1.  布局:HTML和CSS 2.  样式:修改页面元素样式,div的display样式 3.  事件:确定用户做什么操作,onclick(鼠标点击事件).onmouseo ...

  2. Oracle处理XML字段时遇到的ORA-31013: XPATH 表达式无效问题

    select extractValue(ed.info_id, '/Root/ExpandProfile/PhoneNumber') as phone, extractValue(ed.info_id ...

  3. Sublime Text3 运行Python 出现Error:Decode error - output not utf-8

    问题描述: Sublime Text 3 在build Python时,如果python源代码输出有中文,例如"print('中文')",Sublime Text 会报 [Deco ...

  4. __new__方法首先调用并返回一个实例化对象

    >>> class CapStr(str): def __new__(cls,string): string = string.upper() return str.__new__( ...

  5. 1024MySQL事物提交机制

    转自 http://www.cnblogs.com/exceptioneye/p/5451960.html MySQL作为一种关系型数据库,已被广泛应用到互联网中的诸多项目中.今天我们来讨论下事务的提 ...

  6. Spring-Cloud(三)Eureka注册中心实现高可用

    前言: spring-cloud为基础的微服务架构,所有的微服务都需要注册到注册中心,如果这个注册中心阻塞或者崩了,那么整个系统都无法继续正常提供服务,所以,这里就需要对注册中心进行集群,换言之,高可 ...

  7. Java程序优化之替换swtich

    关键字switch语句用于多条件判断,功能类似于if-else语句,两者性能也差不多,不能说switch会降低系统性能.在绝大部门情况下,switch语句还是有性能提升空间的. 但是在项目代码中,如果 ...

  8. SocketServer源码学习(二)

    SocketServer 中非常重要的两个基类就是:BaseServer 和 BaseRequestHandler在SocketServer 中也提供了对TCP以及UDP的高级封装,这次我们主要通过分 ...

  9. STM32 - GPIO

    买了一个STM32F4的开发板,想把上面的东西重新学一下 快速过: 一.GPIO控制 void GPIO_DeInit(GPIO_TypeDef* GPIOx); //把某一个IO口恢复到默认值 /* ...

  10. [BZOJ 4916]神犇和蒟蒻

    Description 很久很久以前,有一只神犇叫yzy; 很久很久之后,有一只蒟蒻叫lty; Input 请你读入一个整数N;1<=N<=1E9,A.B模1E9+7; Output 请你 ...