近日重新整理了登陆接口设计程序,感觉以前的代码没有注释,让园子的其他童鞋读起来比较费劲。也没有流程图和程序运行说明。

1.流程图

2.user_file.txt&lock_file.txt文件内容

(1) user_file.txt

Abel 123
Bbel 1234
Cbel 123456

(2) lock_file.txt

Dbel

3.程序运行说明

(1)输入用户名,程序对比lock_file.txt。如果存在则提示该用户已经被锁定,退出程序。

(2)程序查找用户名是否在user_file.txt中,如果不在提示用户,并退出程序。

(3)用户输入密码,连续输入三次以内,密码正确。提示欢迎,并退出程序。

(4)密码连续输入错误3次,提示用户已经被锁定,并将用户名写入lock_file.txt中。退出程序。

4.程序代码

 import os

 user_file = open('use_file.txt', 'r')  # 打开user_file.txt
user_list = user_file.readlines() # 一次性将user_file.txt中的内容加载到内存中
user_file.close() # 关闭user_file.txt while True:
lock_file = open('lock_file.txt', 'r+') # 打开lock_file.txt
lock_list = lock_file.readlines() # 将lock_file.txt中的内容加载到内存中
lock_file.close() # 关闭lock_file.txt login_Success = False # 设置标记位,用于跳出循环
user_name = input('Please enter your name:'.strip()) # 输入用户名
for line1 in lock_list:
line1 = line1.split() # 将lock_file.txt中的信息读取到line1中
if user_name == line1[0]: # 如果用户名在line1中提示信息并退出整个程序
print("对不起!您的用户名已经被锁定,请联系网站管理员。")
exit()
for line2 in user_list:
line2 = line2.split() # 将user_file.txt中的信息读取到line2中
if user_name == line2[0]: # 如果用户名在line2中进入for循环(输入密码三次错误锁定)
for i in range(3): # 计数器,记录密码输入错误次数
password = input('Please enter your password'.strip()) # 输入密码
if password == line2[1]: # 如果password在line2[1]中,显示欢迎信息,并退出整个程序
print("欢迎 %s 登陆Abel网站!" % user_name)
login_Success = True
break
else: # 密码输入错误次数超过3次,将用户名写入lock_file.txt中
f = open('lock_file.txt', 'a')
f.write('%s\n' % user_name)
f.close()
print("连续输入3次错误密码,您的用户%s已经被锁定,请联系网站管理员。" % user_name) # 提示用户已经锁定,并退出整个程序
login_Success = True
break
if login_Success:
break
else: # 用户名不在line2中,提示用户名不存在。并退出整个程序
print("您输入的用户名不存在,请重新输入或注册")
exit()
if login_Success:
break

python——登陆接口设计(循环方法)的更多相关文章

  1. Python之登陆接口设计

    刚刚开始学习Python,第一个编写的程序. import os user_file = open('use_file.txt', 'r') user_list = user_file.readlin ...

  2. python 登陆接口

    #!/usr/bin/env pythonimport sysname = ''pw=''name_num = 0pw_num = 0#black_list = []with open('a.txt' ...

  3. python登陆接口编写

    #coding:utf-8 import getpass,sys i=0 j=0 while i<3: username=raw_input('username:') #输入用户名 life_1 ...

  4. 像计算机科学家一样思考python-第4章 案例研究:接口设计

    系统环境 ubuntu18 4.1turtle模块 模块一开始导入turtle模块就报错了 Python ( , ::) [GCC ] on linux Type "help", ...

  5. python 作业 编写登陆接口

    # -*- coding:utf-8 -*-import os,sysfor i in range(3):#进行3次循环 blacklist = open(r"C:\Users\Pc4\De ...

  6. Python基础-接口与归一化设计、抽象类、继承顺序、子类调用父类,多态与多态性

    一.接口与归一化设计 Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 由 ...

  7. python之编写登陆接口(第一天)

    作业:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 针对此实例写了有二种类型的脚本,略有不同,具体如下: 帐号文件account.txt内容如下: sam 123 david ...

  8. 优秀的API接口设计原则及方法(转)

    一旦API发生变化,就可能对相关的调用者带来巨大的代价,用户需要排查所有调用的代码,需要调整所有与之相关的部分,这些工作对他们来说都是额外的.如果辛辛苦苦完成这些以后,还发现了相关的bug,那对用户的 ...

  9. Python学习之编写登陆接口(Day1,作业一)

    作业一:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定(下次登陆还是锁定) 知识点:while循环,for循环,文件操作,if判断,列表操作 思路: 1.登陆,三次登陆失败,锁定 ...

随机推荐

  1. HDU 1348 Wall

    题解:计算凸包周长 #include <iostream> #include <cmath> #include <algorithm> const int size ...

  2. POJ-1006 Biorhythms

    [题目描述] 三个周期时间分别为:23,28和33.分别给定三个周期的某一天(不一定是第一天),和开始计算的日期,输出下一个triple peak. [思路分析] 如果不了解中国剩余定理,可以通过模拟 ...

  3. 初探swift语言的学习—Object-C与Swift混编

    swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块,不想再在swift 中再写一次,哪就使用混编.这个在IOS8中是允许的. ...

  4. Js用正则表达式验证字符串

    js 常用正则表达式表单验证代码 作者: 字体:[增加 减小] 类型:转载 js 常用正则表达式表单验证代码,以后大家就可以直接使用了. 正则表达式使用详解 简介 简单的说,正则表达式是一种可以用于模 ...

  5. json数据的获取(网络摘抄)

    一个简单的对象: $.ajax({ type: "post", url: "Handler.ashx", dataType: "html", ...

  6. 2.3.9 用NPOI操作EXCEL--通过NPOI获得公式的返回值

    前面我们学习了通过NPOI向Excel中设置公式,那么有些读者可能会问:“NPOI能不能获取公式的返回值呢?”,答案是可以!一.获取模板文件中公式的返回值如在D盘中有一个名为text.xls的Exce ...

  7. lightOJ 1047 Neighbor House (DP)

    lightOJ 1047   Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...

  8. Nginx 之六: Nginx服务器的反向代理功能

    一:Nginx作为正向代理服务器: 1.正向代理:代理(proxy)服务也可以称为是正向代理,指的是将服务器部署在公司的网关,代理公司内部员工上外网的请求,可以起到一定的安全作用和管理限制作用,正向代 ...

  9. C# Programming Study #1

    引用的时候需要在参数和使用的时候加上 ref 关键字 static bool addnum (ref int val) //引用 { ++val; return true; } 参数数组的概念,可以接 ...

  10. js 几个特殊情况

    alert(033-15);//12,前缀0用在直接量中,表示八进制 alert('033'-15);//18,前缀0用在字符串中,在(隐式)转换将忽略 alert(parseInt('033')-1 ...