作业一:编写登陆接口

1.输入用户名和密码

2.认证成功后显示欢迎信息

3.输错三次后锁定

Readme:

(1)提示用户输入用户名;

(2)用户名验证,验证是否已经锁定;

(3)是否锁定:已锁定告诉用户,输入的用户名已经锁定,找管理员联系;未锁定就验证是否注册;

  (4)是否注册:未注册就提示用户,这个用户名还没有注册,需要注册;注册就让用户输入密码;

  (5)输入密码:输入正确就欢迎用户,输入不正常就三次机会,提示用户输入,三次之后将锁定

  (6)锁定用户从登录用户文件中移除并添加到锁定用户文件。

流程图如下:

def islocked(username):
#验证用户是否锁定,如果锁定,就打印锁定,否则执行登录模块
with open("lock_user","r") as f: #打开文件,进行验证
users = [] #定义一个空的列表,用于存储用户名
lines = f.readlines() #由于是读取的文件信息,需要把用户信息放到一个列表中容易操作
for line in lines:
users.append(line.strip().split(":")[]) #生成一个包含所有用户名的列表
if username in users:
#验证用户输入的用户名是否在系统用户列表中,存在则提示用户已经锁定了
print("你输入的用户名%s已经被锁定,请联系管理员" %username)
exit() else:
#不存在则验证是否注册
isregister(username) def isregister(username):
#验证用户是否注册
with open("user_list",'r') as f_object:
#打开文件,生成用户列表
register_users =[]
user_lines = f_object.readlines()
for user_line in user_lines:
register_users.append(user_line.strip().split(":")[])
if username in register_users:
#验证用户是否注册,注册了就跳过
pass
else:
#没有注册提示用户这个用户名没有注册,并退出循环
print("Sorry,%s还没有注册,请注册之后登录" %username)
exit() def userpassword():
#让用户输入用户密码,并返回给调用函数
password = input("Please input your password:")
return password def login(username):
#用户登录模块
i =
islocked(username)
#验证用户是否锁定是否注册
with open("user_list","r") as f1:
dic = {} #定义空字典,生成用户名,密码配对字典
user_lines = f1.readlines()
for user_line in user_lines:
#生成用户名-密码字典
(user,user_password) = user_line.strip().split(":")
dic[user] = user_password
while i < :
#用户有三次机会输入密码验证
password = userpassword()
#调用函数让用户输入密码
if dic[username] == password:
#用户输入的密码与系统存储的密码比较,如果一致登录成功就退出登录页面
print("Hello %s,welcome to back." %username)
break
else:
#不成功提示用户有三次机会,如果三次都不成功,将锁定用户名
if i != :
print("对不起,你输入的密码不对,你还有%s次机会" %(-i))
i +=
else:
print("对不起,你输入的次数过多,你的用户名已经被锁定,请联系管理员")
add_locked_user(username)
#输入次数过多,把用户名从文件user_list中删除,同时添加到锁定文件lock_user
break def add_locked_user(username):
#锁定输入密码次数过多用户名
with open("user_list","r") as file:
#打开文件,并查找要锁定用户名的位置
lines = file.readlines() #逐行读取文件生成一个列表
users = [] #定义一个空的列表,借助用户名列表找到用户名位置
for line in lines:
users.append(line.strip().split(":")[])
num = users.index(username) #找到锁定问户名在列表中索引
with open("lock_user","a") as f:
#将待锁定的用户名添加到锁定文件
f.write("%s\n" %lines[num])
with open("user_list","w") as f_object:
#以只读模式打开文件
del lines[num] #删除锁定用户的用户名
f_object.writelines(lines) #把剩下用户逐行读取到文件中 login(username=input("Please input your username:"))

上面代码运行需要创建两个文件在同级目录,lock_user和user_list,在里面使用了列表、字典等功能,list列表、字典功能最常用,要经常尝试使用空字典、空列表的功能,writelines(),readlines()。上面代码可以实现判断用户输入的用户名是否在锁定列表中,是否在登录的列表中,并且能够实现登录三次锁定的功能。

day1作业一:编写登陆接口的更多相关文章

  1. day1作业:编写登陆接口

    作业一:编写登陆接口 1.输入用户名和密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 思路:要求是编写登陆接口,那么要有一个存放用户信息的模块:三次后锁定,要有一个存放锁定用户信息的模块:我们知 ...

  2. Day1作业1:登陆接口(加入日志、注册功能)

    流程图如下: 最先考虑使用python中的list,以能取到user_list中的用户信息,但中途发现没有比较好的方法截取取密码,还是新手的缘故,最终选择了使用dict,以方便截取用户名以及相应的密码 ...

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

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

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

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

  5. python基础一之课后作业:编写登录接口

    1 # Author : Mamba 2 3 #python基础一之课后作业:编写登录接口 4 5 # 输入用户名密码 6 # 认证成功后显示欢迎信息 7 # 用户名3次输入错误后,退出程序 8 # ...

  6. 使用 Python 编写登陆接口

    # 使用 Python 编写登陆接口# Create Date: 2017.10.31 Tuesday# Author: Eric Zhao# -*- coding:utf-8 -*-'''编写登陆接 ...

  7. Python学习第一天-编写登陆接口

    编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 帐号文件user.txt内容如下: qaz 123qwe 12345qweqwr 12321424...... 锁文件user_l ...

  8. python 作业 编写登陆接口

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

  9. Python之编写登陆接口

    1.输入用户名密码: 2.认证成功后显示欢迎信息: 3.错误三次后,账号被锁定. 账号文件:user.txt 锁定文件:locked.txt 流程图如下: # -*- coding:utf-8 -*- ...

随机推荐

  1. C++之高级编程20170914

    /*************************************************************************************************** ...

  2. 曼-惠特尼U检验Mann–Whitney U Test

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&am ...

  3. DHCP及DHCP多作用域服务器工作原理

    一.DHCP服务是什么 DHCP称为动态主机配置协议.DHCP服务允许工作站连接到网络并且自动获取一个IP地址.配置DHCP服务的服务器可以为每一个网络客户提供一个IP地址.子网掩码.缺省网关.一个W ...

  4. bzoj 2820 / SPOJ PGCD 莫比乌斯反演

    那啥bzoj2818也是一样的,突然想起来好像拿来当周赛的练习题过,用欧拉函数写掉的. 求$(i,j)=prime$对数 \begin{eqnarray*}\sum_{i=1}^{n}\sum_{j= ...

  5. 【Foreign】减法 [二分][贪心]

    减法 Time Limit: 10 Sec  Memory Limit: 256 MB Description 给你一个n个数的序列A,并且给出m次操作B. 操作的含义是:每次从A中选出不同的B_i个 ...

  6. 【CodeForces】827 D. Best Edge Weight 最小生成树+倍增LCA+并查集

    [题目]D. Best Edge Weight [题意]给定n个点m条边的带边权无向连通图,对每条边求最大边权,满足其他边权不变的前提下图的任意最小生成树都经过它.n,m<=2*10^5,1&l ...

  7. 【洛谷 P2472】 [SCOI2007]蜥蜴 (最大流)

    题目链接 简单网络流. 源点向蜥蜴连流量为\(1\)的边. 能跳出去的点向汇点连流量为\(INF\)的边. 把每个点拆成\(2\)个点,\(O(n^4)\)枚举两两点,如果距离小于等于\(d\),就互 ...

  8. flex图片布局

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>f ...

  9. NYOJ 814 又见拦截导弹 (模拟)

    题目链接 描述 大家对拦截导弹那个题目应该比较熟悉了,我再叙述一下题意:某国为了防御敌国的导弹袭击,新研制出来一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:它的第一发炮弹能够到达任意的高度,但是以 ...

  10. CounterBreach安装测试的全部过程

    CounterBreach安装测试的全部过程 1安装数据库审计的网关 Admin进入 Impcfg初始化 选择网关 是否替换另一个网关? 否 是否改变默认管理口 设置管理口地址 192.168.1.2 ...