作业需求:

  1. 输入用户名密码
  2. 认证成功后显示欢迎信息
  3. 输错三次后锁定

实现思路:

  1. 判断用户是否在黑名单,若在黑名单,则将用户锁定
  2. 判断用户是否存在,若不存在,提示用户不存在
  3. 若用户存在,判断登录密码是否正确,若正确,则欢迎用户成功登录,提供用户三次密码输入机会,若三次输入错误,则将账户锁定

方式一:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
count = 0 #计数器
username = "aaa" #登录用户名
userpassword = "asd" #登录密码 #读取黑名单用户
f = open("aaa.txt","r")
file_list = f.readlines()
f.close()
lock= []
name = input("登录用户名:") #判断用户是否在黑名单
for i in file_list:
line = i.strip("\n")
lock.append(line)
if name in lock:
print("你的账户已锁定,请联系管理员。")
else:
#如果用户没有在黑名单,判断用户是否存在
if name == username:
#如果密码连续输错了三次,锁定账号
while count <3:
password = input("登录密码:")
if name == username and password == userpassword:
print("欢迎%s!"%name)
break
else:
print("账号和密码不匹配")
count +=1
else:
print("对不起,您的账号连续输错三次密码已被锁定,请联系管理员。")
f = open("aaa.txt","w+")
li = ['%s'%username]
f.writelines(li)
f.close()
else:
print("用户名不存在,请输入正确的用户名。")

方式二:

 #新建两个文件,account.txt和account_lock.txt,在account中输入aaa 123
#其中account.txt采用只读形式,account_lock.txt则采用读写形式
import sys,os
count = 0
name_list = []
while count < 3:
name = input("请输入用户名:")
lock_file = open("account_lock.txt","r+") #读取黑名单,"r+":打开一个文件用于读写,"r":以只读方式打开文件
lock_list = lock_file.readlines()
#.readlines():一次读取整个文件,并将内容分析成一个行的列表,与.read()一样
#.readline():一次读取一行,当内存不够时使用.readline()
for lock_line in lock_list:
lock_line = lock_line.strip('\n')
if name == lock_line:
#如果输入的用户名位于黑名单,则程序异常退出
sys.exit("用户%s已经被锁定,请联系管理员解锁." %name)
#读取正确的用户名和密码
user_file = open("account.txt","r")
user_list = user_file.readlines()
for user_line in user_list:
(user,password) = user_line.strip('\n').split()
name_list.append(user_line) #.append():用于在列表末尾添加新的对象
print("---------",name_list)
#用户名正确,密码输入计数
if name == user:
i = 0
while i<3:
passwd = input("请输入密码:")
if passwd == password:
print("欢迎%s登录"%name)
sys.exit(0)
else:
if i<2:
print("用户%s密码错误,请重新输入,还有%d机会."%(name,2-i))
i += 1
else:
lock_file.write(name + '\n')
sys.exit("用户%s输错密码三次,用户将被锁定并退出,请联系管理员解锁."%name)
else:
pass
else:
#用户名输入错误计数
if count < 2:
print("用户%s不存在,请重新输入,还有%d次机会"%(name,2-count))
count += 1
else:
sys.exit("用户%s不存在,退出"%name)
#关闭已经打开的文件
lock_file.close()
user_file.close()

python学习-实现用户密码登录,输错三次锁定的更多相关文章

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

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

  2. python 循环和file操作实现用户密码输错三次将用户锁定

    一.需求编写登录接口1.输入用户名密码2.认证成功后显示欢迎信息3.输错三次后锁定 二.简单思路登录,三次密码输入错误锁定用户1.用户信息文件:存放用户名和密码2.黑名单文件:将输入三次错误的用户加入 ...

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

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

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

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

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

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

  6. 关于git 远程仓库密码一直输错的问题

    解决方法, git 换地方使用后需要重新配置秘钥,一个钥匙开一个地方的门: 如果还不行, 在控制面板-用户账户-凭据管理-加添凭证,输入正确的账号密码:因为Windows的凭据管理器里面可能保存了你刚 ...

  7. Python学习---模拟微信网页登录180410

    WEB微信 网页登录的猜想: a. 访问页面出现二维码 b. 长轮询监听是否已经扫码并且点击确认 c. 如何进行会话保持 d. 如何获取用户列表 e. 如何发送消息(接收消息) 过程:访问微信官网[h ...

  8. Python开发之用户密码存储

    在各种线上应用中,用户名密码是用户身份认证的关键,它的重要性不言而喻.一方面,作为保护用户敏感数据的钥匙来说,一旦被破解,系统将敞开大门完全不设防.另一方面,密码这把钥匙本身就是非常敏感的数据:大多数 ...

  9. ORACLE_19c用户密码登录失败的问题以及ORA-28040

    测试环境19c 本地登录无异常,创建测试用户,电脑Plsql登录提示报错ORA-28040,处理后再次登录提示密码错误,最后重置密码再次登录OK? 通过这个问题再次测试及反思: 1.ORA-28040 ...

随机推荐

  1. Linux下的查找命令which、whereis、locate、find(6/20)

    Linux下查找相关命令主要有以下4个:which.whereis.locate.find. (1)which   [-a]    cmdname1 cmdname2 ...... 命令参数: -n  ...

  2. Docker_remote_api未授权访问漏洞

    docker remote  api主要的目的是取代命令行界面, docker client和docker daemon通过unix domain socket进行通信. 默认情况下,只有本机的roo ...

  3. phoenix部署手册-基于hbase

    背景描述: phoenix基于hbase的SQL层,映射hbase的表,也可以映射视图(VIEW) 部署安装比较简单 映射表和视图的区别: 映射表: 在Phoenix建表错误不易更改: 删除会连同hb ...

  4. J2EE--Struts2基础开发笔记

    内容中包含 base64string 图片造成字符过多,拒绝显示

  5. react native 中的ReadableMap和WritableMap的使用

    react native跟安卓原生交互的数据类型中,有两个比较陌生的类型,ReadableMap和WritableMap. ReadableMap和WritableMap,顾名思义,反正是map. W ...

  6. Introspector内省和反射的区别.

    Introspector 是一个专门处理bean的工具类.用来获取Bean体系里的 propertiesDescriptor,methodDescriptor. 要理解这个,就要理解下面几个议题.   ...

  7. CA认证_demo

    CA认证,即电子认证服务 [1]  ,是指为电子签名相关各方提供真实性.可靠性验证的活动. 证书颁发机构(CA, Certificate Authority)即颁发数字证书的机构.是负责发放和管理数字 ...

  8. Filter FASTA files

    Use a regular expression for filtering sequences by id from a FASTA file, e.g. just certain chromoso ...

  9. Google maps api demo

    demo: <!DOCTYPE html> <html> <head> <meta name="viewport" content=&qu ...

  10. JMS-activMq与spring进行整合

     对JMS做了一个简要介绍之后,接下来就讲一下Spring整合JMS的具体过程.JMS只是一个标准,真正在使用它的时候我们需要有它的具体实现,这里我们就使用Apache的activeMQ来作为它的实现 ...