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

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. Linux中fork()函数详解(转)

    一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同, ...

  2. 解决64位系统下IIS 8下Asp+Access网站配置

    一.IIS7的安装 Windows 中IIS8是默认不安装的,所以在安装完windows 8,之后如果需要安装IIS8的话,就要自己动手了. 安装的步骤为:开始>控制面板>程序>打开 ...

  3. Oracle 表空间操作

    -- 查询已有表空间 SELECT TABLE_SPACENAME FROM DBA_TABLESPACES; -- 创建表空间 CREATE TABLESPACE SPACE DATAFILE ‘E ...

  4. js遍历对象的属性并且动态添加属性

    var person= { name: 'zhangsan', pass: '123' , 'sni.ni' : 'sss', hello:function (){ for(var i=0;i< ...

  5. android service和activity的通讯

    我们须要用下面方式来启动service: </pre><pre name="code" class="java"><span st ...

  6. 碰撞缓冲效果的导航条 js

  7. html5之histroy浅析

    history是HTML5的新特性,我们可以使用它操作这个历史记录堆栈. (1)history提供了对浏览器历史纪录堆栈的读取,同时实现在访问记录中的前进和后退: history.length 历史记 ...

  8. C语言回溯算法解决N皇后问题

    回溯算法的模型是 x++, not satisfy ? x-- : continue. 代码中x作列号,y[x]保存第x列上皇后放置的位置. #include<stdio.h> #incl ...

  9. sortable.js 华丽丽的排序

    首先导入这几个资源 <link href="/css/jquery-ui-1.10.3.custom.css" rel="stylesheet" type ...

  10. Visual Studio 2013 Xamarin for iOS 环境搭建

    原文:Visual Studio 2013 Xamarin for iOS 环境搭建 一.Mac安装Xamarin.iOS 1,我的Mac 环境:OSX 10.10.3.Xcode 6.3.2 (使用 ...