python中用户尝试输入三次_用Python实现登录接口,允许尝试三次

项目需求描述:要求用户输入用户名和密码,认证成功后显示欢迎信息,如果连续输错三次则锁定用户名。

逻辑流程图:

实现代码:#!/usr/bin/env python

import sys

account_file = ‘account.txt‘

lock_file = ‘lock.txt‘

# put accounts in a list

fh_account = open(account_file)

account_list = fh_account.readlines()

fh_account.close()

# initialize retry count as 3 for every account

retry_count = {}

for line in account_list:

line = line.split()

retry_count[line[0]] = 3

while True:

# put locked accounts in a list

fh_lock = open(lock_file)

lock_list = []

for i in fh_lock.readlines():

line = i.strip(‘\n‘)

lock_list.append(line)

fh_lock.close()

# handle the username and password empty issue

username = raw_input(‘Username: ‘).strip()

if len(username) == 0:

print ‘\033[31;1mUsername should not be empty !\033[0m‘

continue

password = raw_input(‘Password: ‘).strip()

if len(password) == 0:

print ‘\033[31;1mPassword should not be empty !\033[0m‘

continue

# authentication part

if username in lock_list:

print "\033[31;1mSorry, ‘%s‘ is locked already !\033[0m" % username

continue

if not retry_count.has_key(username):   # inexistent account

retry_count[username] = 3

for line in account_list:

line = line.split()

if username == line[0] and password == line[1]: # authentication pass

retry_count[username] = 3       # reset retry times for this account

sys.exit(‘\033[32;1mWelcome %s login my system !\033[0m‘ % username)

else:                                   # authentication failed

print ‘\033[31;1mWrong username or password !\033[0m‘

retry_count[username] -= 1

if retry_count[username] > 0:

print ‘\033[31;1mYou have %d more chances !\033[0m‘ % retry_count[username]

else:

fh = open(lock_file, ‘a‘)

fh.write(‘%s\n‘ % username)

fh.close()

print "\033[31;1mSorry, ‘%s‘ is locked !\033[0m" % username

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488430.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你可能会错过的3个重要AI趋势

来源:雷锋网以下3个趋势,目前可能尚未引起注意,但长期来看会产生重大影响。根据Gartner的一项调查,到2020年底,全球48%的CIO将部署AI。尽管人们对AI和ML持乐观态度,但我仍然持怀疑态度。在可以预…

php flush nginx,Nginx+phpfastcgi下flush输出问题

最近由于业务需要,需要使用php的flush输出缓存刷新,处理浏览器超时问题.最初的测试代码如下:ob_start();//打开缓冲区for ($i10; $i>0; $i--){echo $i.‘‘;ob_flush();flush();sleep(1);}ob_end_flush();//输出并关闭缓冲die();本以为这样就能1秒钟输出一个数字…

线性代数知识点总结_线性代数导读+笔记

一些学习线性代数的心得和资源分享,供大家参考。资源Introduction to Linear Algebra, 5th Edition​math.mit.edu学线性代数主要的参考书,Strang 教授也算是网红了,讲课讲得十分浅显易懂,网上有配套的video,强烈推荐。…

5G通信网络专题报告:新一轮移动通信网络建设迎来高潮

报告来源:山西证券1. 移动通信网络概述1.1 移动通信网络行业界定异地间人与人、人与物、物与物进行信息的传递和交换称为通信。通信以获取信息为目的,实现信息传输所需的一切设备和传输媒介构成通信系统,通信系统大体包括终端和通信网络两部分…

Oracle 通过字段名查询其所在的表

select owner , table_name , column_name from dba_tab_columns where column_nameLOG_TYPE ;转载于:https://www.cnblogs.com/linnuo/p/6812339.html

python标准库 下载_下载python标准库--python

1 #coding:utf-82 importurllib23 importos,sys4 from BeautifulSoup import BeautifulSoup #For processing HTML5 from bs4 importBeautifulSoup6 classBookSave():7 8 dir:html文件保存目录 url:index.html目录 static_url:js、css所在目录的上级目录9 distingui…

马赛克战——利用人工智能和自主系统来实施决策中心作战

知远战略与防务研究所 沐俭/编译自:美国战略与预算评估中心网站【知远导读】本篇推送编辑节选自美国战略与预算评估中心2020年2月11日发布的同名研究报告,报告由CSBA高级研究员布莱恩克拉克等撰写。报告认为,美军目前这种以一体化、多功能集…

java动态内存分部,如何利用Java实现动态内存分配?

一.实验原理原理:内存以分区为单位,每个分区可由(ID,addr,size,)进行描述class sector{int id -1;//记录作业的编号int addr0;//内存的起始位置int size100;//分配的内存大小}建立两个链表avail和busy。av…

codevs 1283 等差子序列

http://codevs.cn/problem/1283/ 题目描述 Description给一个 1 到 N 的排列{Ai}&#xff0c;询问是否存在 1<p1<p2<p3<p4<p5<…<pLen<N&#xff08;Len>3&#xff09;&#xff0c;使得 Ap1,Ap2,Ap3,…ApLen 是一个等差序列。 输入描述 Input Descr…

postgresql两个列模糊比较_JDBC进阶(一):批处理与获取自增长列的值

一、批处理假如要插入一万条记录到数据表中&#xff0c;那么使用普通的方法就要执行一万次插入操作&#xff0c;这样会频繁打开和关闭数据库连接&#xff0c;导致执行速度变慢。因此可以使用批处理机制将多条语句一次性提交给数据库批量处理。批处理的相关API&#xff1a;void …

深度解读后疫情时代下,零售行业的趋势及技术前瞻

来源&#xff1a;苏宁零售技术研究院作者&#xff1a;王俊杰、罗海棠博士、郭永慧、池曙强、张绿漪博士新冠状病毒肺炎疫情发展严峻&#xff0c;短时间内席卷全国。民众在政府的号召下选择了尽量不出行&#xff0c;餐饮、旅游、线下零售等行业面临严峻考验。但同时&#xff0c;…

php 两个数组中不同的元素,PHP实现查询两个数组中不同元素的方法

这篇文章主要介绍了PHP实现查询两个数组中不同元素的方法,涉及PHP数组差集运算与数组合并的相关技巧,需要的朋友可以参考下本文实例讲述了PHP实现查询两个数组中不同元素的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;<?php $a array("max_allow_dia…

JAVA-配置path环境

配置path环境变量变的目的是什么&#xff1f; 控制台可以在任意的路径下都可以找到java的开发工具。 为了说明几个JDK环境变量的作用&#xff0c;这里先给出环境变量的定义 环境变量&#xff1a; 环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数&#xff0c;比…

c井语言python_【一点资讯】C井风靡一时的编程语言和现在最火编程语言Python!谁更强? www.yidianzixun.com...

步入正题&#xff1a; 欢迎提出更简单或者效率更高的方法基础系列&#xff1a;(这边重点说说Python&#xff0c;上次讲过的东西我就一笔带过了)1.输出类型转换Python写法&#xff1a;2.字符串拼接 拼接输出方式python&#xff1a;NetCore这次为了更加形象对比&#xff0c;一句一…

add php support,wordpress函数add_post_type_support()用法示例

add_post_type_support( string $post_type, string|array $feature )Register support of certain features for a post type.描述All core features are directly associated with a functional area of the edit screen, such as the editor or a meta box. Features includ…

170页PPT入门深度强化学习! 汪荣贵 图灵人工智能 昨天

转自&#xff1a;中国图象图形学报什么是强化学习&#xff1f;和其他学习方法相比&#xff0c;有何不同与特色&#xff1f;深度学习如何与强化学习结合&#xff1f;并各取所长&#xff1f;深度强化学习会成为未来引领智能计算的方法吗&#xff1f;深度强化学习将强化学习和深度…

matlab 文件路径问题

1. fullfile&#xff1a;路径补全 f fullfile(filepart1,...,filepartN) 显然可变参数之间填充的路径分隔符&#xff08;path separator&#xff09;&#xff0c;会根据操作系统而变化&#xff1a; windows&#xff1a;/Linux&#xff1a;\2. fileparts&#xff1a;路径拆分 […

php querystring使用,node.js中的querystring.parse方法使用说明_node.js

方法说明&#xff1a;将字符串转成对象。说白了其实就是把url上带的参数串转成数组对象。(看例子就知道咯)语法&#xff1a;代码如下:querystring.parse(str, [sep], [eq], [options])接收参数&#xff1a;str 欲转换的字符串sep 设置分隔符&#xff0c;默认为 ‘&eq 设置赋…

钟南山院士应邀向欧洲同仁全方位解析新冠肺炎(配中文文字版)

来源&#xff1a;ERS欧洲呼吸学会尊敬的同事们&#xff0c;女士们&#xff0c;先生们&#xff1a;非常荣幸能有机会与您分享我们处理中国境内COVID19感染的相关经验。在这种情况下&#xff0c;我仍然在前线工作&#xff0c;所以准备这个PPT比较匆忙。我只能告诉您一些事实、某些…

powerbi的功能介绍_Power BI性能提升的5大秘密武器

​Power BI无疑已经走了很长一段路&#xff0c;它以其作为自助服务工具的强大根基&#xff0c;易于使用的功能以及在企业领域的持续推动和推动而发展。但是&#xff0c;我们仍然可以发现许多开发和维护Power BI解决方案可以通过应用一些更改而受益匪浅&#xff0c;这些更改将导…