题目要求:

输入用户名密码
认证成功后显示欢迎信息
输错三次后锁定
 
#要求使用文件存储用户名和密码,每次从文件读入用户名和密码用来验证,如果输错三次密码该账户会被锁定,并讲锁定的用户名写入文件
#账号密码正确输出欢迎信息
 
涉及知识点:
文件读写操作
循环流程
程序判断流程
经过分析构思
我写的第一版代码如下:
#Author jack
# _*_ coding: utf-8 _*_
#date 2019-08-14
'''
作业一:编写登录接口
输入用户名密码
认证成功后显示欢迎信息
输错三次后锁定
'''
#判断用户账号密码
def check_pass(username, password):
with open('userfile.txt', 'r+') as f:
content = f.readlines()
for i in content:
if i.split(',')[0] == username and i.split(',')[1].strip('\n') == password:
return True
break
else:
return False #判断用户名是否锁定:
def isLock(username):
with open('locklist.txt', 'r') as f:
cont = f.read()
if username in cont:
return False
else:
return True #写锁定用户名到locklist,如果用户输错三次,就调用此函数,讲锁定的用户名写入此文件
def writeErrlist(username):
with open('locklist.txt', 'a+') as f:
f.write(username)
f.write('\n') def main():
count = 0 #存储输密码次数
while count < 3:
username = input('Please input your username: ')
is_lock = isLock(username)
if is_lock:
passwd = input('Please input your password: ')
result = check_pass(username, passwd)
if result:
print('welcome back! "{}"'.format(username))
break
else:
count += 1
if count < 3:
print('Invalid username or password, Please try again!')
else:
print('Too many attempts, Your account has benn locked.')
writeErrlist(username)
else:
print('Your account has been locked!!!') if __name__ == "__main__":
main()

  

Python之简单的用户名密码验证的更多相关文章

  1. 【WCF】使用“用户名/密码”验证的合理方法

    我不敢说俺的方法是最佳方案,反正这世界上很多东西都是变动的,正像老子所说的——“反(返)者,道之动”.以往看到有些文章中说,为每个客户端安装证书嫌麻烦,就直接采用把用户名和密码塞在SOAP头中发送,然 ...

  2. WebService 用户名密码验证

    原文:WebService 用户名密码验证 在项目开发的过程中,WebService是经常要用的,当调用WebService方法时,需要经过服务的验证才可以调用,一般就是用户名/密码验证,还有一个就是 ...

  3. 自定义实现wcf的用户名密码验证

    目前wcf分为[传输层安全][消息层安全]两种,本身也自带的用户名密码验证的功能,但是ms为了防止用户名密码明文在网络上传输,所以,强制要求一旦使用[用户名密码]校验功能,则必须使用证书,按照常理讲, ...

  4. WCF 安全性之 自定义用户名密码验证

    案例下载 http://download.csdn.net/detail/woxpp/4113172 客户端调用代码 通过代理类 代理生成 参见 http://www.cnblogs.com/woxp ...

  5. OpenVPN使用用户名/密码验证方式

    OpenVPN推荐使用证书进行认证,安全性很高,但是配置起来很麻烦.还好它也能像pptp等vpn一样使用用户名/密码进行认证. 不管何种认证方式,服务端的ca.crt, server.crt, ser ...

  6. 【WCF】Silverlight+wcf+自定义用户名密码验证

    本文摘自 http://www.cnblogs.com/virusswb/archive/2010/01/26/1656543.html 在昨天的博文Silverlight3+wcf+在不使用证书的情 ...

  7. vb6-很简单的配置密码验证提示

    '很简单的配置密码验证提示 Dim add As String add = Trim(InputBox("请输入配置密码", "报表配置")) If add = ...

  8. WCF服务安全控制之netTcpBinding的用户名密码验证【转】

    选择netTcpBinding WCF的绑定方式比较多,常用的大体有四种: wsHttpBinding basicHttpBinding netTcpBinding wsDualHttpBinding ...

  9. WCF用户名密码验证方式

    WCF使用用户名密码验证 服务契约 namespace WCFUserNameConstract { [ServiceContract] public interface IWcfContract { ...

随机推荐

  1. Mysql批量删除和修改某个前缀的表

    1.批量删除某个前缀的表名,首先选出这些个表. select concat( 'drop table ', table_name, ';' ) from information_schema.tabl ...

  2. VUE3 之 动态组件 - 这个系列的教程通俗易懂,适合新手

    1. 概述 暗示效应告诉我们: 巧妙的暗示会在不知不觉中剥夺我们的判断力,对我们的思维形成一定的影响,造成我们行为的些许改变或者偏差. 例如你的朋友说你脸色不太好,是不是病了,此时,你可能就会感觉浑身 ...

  3. MySQL数据库初识、下载使用(针对库、表、记录的增删改查)

    今日内容概要 数据演变史 数据库软件的本质 MySQL简介 下载与安装 基本配置 基本SQL语句 内容详细 1.数据演变史 # 1.单独的文本文件 没有固定的存放位置和格式 文件名:user.txt ...

  4. MyBatis功能点二:plugins插件使用

    MyBatis自定义插件使用步骤(已有pojo及mapper的基础上) 一.自定义插件,实现Interceptor接口 二.核心配置文件sqlMapConfig.xml文件增加插件相关内容 测试 测试 ...

  5. docker 批量删除 none 镜像

    在使用 docker images 命令的时候,经常会在列表中看到 <none>:<none> 的镜像. 这种镜像在 Docker 官方文档中被称作 dangling imag ...

  6. 容器化 | 在 KubeSphere 中部署 MySQL 集群

    程润科 数据库研发工程师,目前从事 RadonDB MySQL Kubernetes 研发,热衷于研究数据库内核.K8s 相关技术. 张莉梅 高级文档工程师,目前负责数据库产品文档开发.维护和管理工作 ...

  7. Java邮件发送中的setRecipient方法使用

    ​ 一.方法setRecipient(Message.RecipientType type, Address address),是用于设置邮件的接收者. 1.有两个参数,第一个参数是接收者的类型,第二 ...

  8. 2021年国内BI厂商推荐_大数据分析工具

    随着互联网大数据时代的不断发展,BI让企业的工作效率变得更高效.BI的功能也随着需求的增长不断地丰富,例如,数据可视化大屏.可视化表格.商业化数据分析.数据地图等.国外的厂商在很多场景下无法满足国内的 ...

  9. 【C#DLR 动态编程】CallSite<T>

    CallSite<T>译为"动态(调用)站点",它是DLR中的核心组件之一

  10. MySQL常用查询命令(单表查询)

    查询语法如下: select... from... where... group by... (having)... order by...; 顺序是from (从指定表中) where (具体条件) ...