day1作业:编写登陆接口
作业一:编写登陆接口
1.输入用户名和密码
2.认证成功后显示欢迎信息
3.输错三次后锁定
思路:要求是编写登陆接口,那么要有一个存放用户信息的模块;三次后锁定,要有一个存放锁定用户信息的模块;我们知道,保存用户信息有两种方式,一种是数据库保存,一种是文件保存,现在我们只学习了文件保存,因此要有两个文件,一个是用户信息文件,一个是锁定用户信息文件。
要从文件中读取信息,添加信息,修改信息。
readme:
(1)用户输入用户名;
(2)用户名去锁定文件中验证是否锁定;如果锁定让用户联系管理员解决;
(3)如果没有锁定去用户文件验证用户是否存在,存在让用户输入密码,输入成功后显示欢迎信息;输错三次后锁定用户;
(4)如果用户不在用户文件中,提示用户没有注册,需要注册,编写注册模块,让用户注册,注册之后添加用户到用户列表中,并且显示欢迎信息,不让用户在进行输入,自动链接到登录状态。
流程图如下:
active = None
#程序执行的标识符 def verification(username):
"""验证用户是否锁定"""
locked_users = []
with open("locked_file") as locked_f:
for line in locked_f:
locked_user,locked_pwd = line.split(":")
locked_users.append(locked_user)
print(locked_users)
if username in locked_users:
print("对不起,你的用户名已经被锁定,请联系管理员!")
else:
active = True
return active def is_registered(username):
"""验证用户是否注册,注册就让用户登录,未注册让用户选择重新输入或者注册"""
users = {}
with open("active_file","r+") as f:
for active_line in f:
user,pwd = active_line.split(":")
users[user] = pwd if username in users.keys():
test_num =
while test_num < :
user_pwd = input("请输入您的密码:")
if user_pwd == users[username]:
print("welcome back,have a good time!")
return False
else:
test_num +=
else:
#用户输入三次以上锁定用户,使用的是while...else...方法
print("对不起,你输入的次数过多,你的用户已经被锁定,请联系管理员!")
mes = "\n" + username + ":" + users[username]
with open("locked_file","a") as f1:
f1.write(mes)
return False
else:
print("您输入的用户名不存在,请按照下面的提示选择!")
print("注册:请输入1\n登录:请输入2")
num = input("请输入你的选择:")
if num == "":
register_name = input("请输入你要注册的用户名:")
while True:
register_pwd = input("请输入你的密码:")
register_pwd2 = input("请再次输入你的密码:")
if register_pwd == register_pwd2:
break
else:
print("您输入的密码不对,请重新输入")
message = "\n" + register_name + ":" + register_pwd
print("Thank for your registing,have a good time!")
with open("active_file","a") as f_obj:
f_obj.write(message)
return False elif num == "":
user_name = input("请重新输入你的用户名:")
verification(user_name) if __name__ == "__main__": username = input("请输入你的用户名:")
active = verification(username)
while active:
active = is_registered(username)
上面代码实现了验证和锁定的功能,也实现了新用户的注册功能,但是有一个缺陷,就是当用户锁定的时候没有从这个当前文件中删除,添加到锁定用户信息的文件中,往文件中添加信息很简单,但是从文件中删除一条信息却不是很简单,不能像列表那样随心所欲的操作。只能先进行转换,而且列表中操作文件的时候,换行符等等这些东西有很恶心。上面代码会进行如下转换,学习本来就是一件繁琐的事情,但是也要去做的完美,下面会参考别人写的代码,学习一下别人如何实现文件中不需要的信息的删除,然后好好完善一下上面的代码。
day1作业:编写登陆接口的更多相关文章
- python 作业 编写登陆接口
# -*- coding:utf-8 -*-import os,sysfor i in range(3):#进行3次循环 blacklist = open(r"C:\Users\Pc4\De ...
- Python学习之编写登陆接口(Day1,作业一)
作业一:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定(下次登陆还是锁定) 知识点:while循环,for循环,文件操作,if判断,列表操作 思路: 1.登陆,三次登陆失败,锁定 ...
- day1作业一:编写登陆接口
作业一:编写登陆接口 1.输入用户名和密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 Readme: (1)提示用户输入用户名: (2)用户名验证,验证是否已经锁定: (3)是否锁定:已锁定告诉 ...
- python之编写登陆接口(第一天)
作业:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 针对此实例写了有二种类型的脚本,略有不同,具体如下: 帐号文件account.txt内容如下: sam 123 david ...
- day1作业:登录接口
作业一:编写登陆接口 1.输入用户名和密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 思路: (1)用户输入用户名: (2)去锁定文件中验证用户名是否锁定: (3)去当前用户验证用户是否存在: ...
- 使用 Python 编写登陆接口
# 使用 Python 编写登陆接口# Create Date: 2017.10.31 Tuesday# Author: Eric Zhao# -*- coding:utf-8 -*-'''编写登陆接 ...
- Python学习第一天-编写登陆接口
编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 帐号文件user.txt内容如下: qaz 123qwe 12345qweqwr 12321424...... 锁文件user_l ...
- day1 作业编写登录窗口
作业一:编写登录接口 (1)输入用户名和密码: (2)认证成功后显示欢迎信息: (3)输错三次后锁定. 思路:我们知道,要想让程序记住之前输入多少次,锁定用户,那么可以使用数据库来保存用户的状态,然而 ...
- Python之编写登陆接口
1.输入用户名密码: 2.认证成功后显示欢迎信息: 3.错误三次后,账号被锁定. 账号文件:user.txt 锁定文件:locked.txt 流程图如下: # -*- coding:utf-8 -*- ...
随机推荐
- python中的模块及路径
python在import module的时候 是按照以下顺序去import一个module的: 1. 首先判断这个module是不是built-in即内建模块, 如果是则引入内建模块,如果不是则在一 ...
- codevs 1080 线段树练习 CDQ分治
codevs 1080 线段树练习 http://codevs.cn/problem/1080/ 时间限制: 1 s 空间限制: 128000 KB 题目描述 Description 一行N个 ...
- SVN启停脚本
说明:特别注意红色部分,外部$1传入Msg函数时失效,故特此读取一遍再传入!执行时要给脚本加执行权限!#chmod 755 /scripts/svn [root@kazihuo /scripts]# ...
- PHP7 学习笔记(一)Ubuntu 16.04 编译安装Nginx-1.10.3、 PHP7.0.9、Redis3.0 扩展、Phalcon3.1 扩展、Swoole1.9.8 扩展、ssh2扩展(全程编译安装)
==================== PHP 7.0 编译安装================== wget http://cn2.php.net/get/php-7.0.9.tar.bz2/fr ...
- 权限 mock location
1.集成环信的时候,该权限报错: mock location权限是是“允许程序创建模拟位置”,主要是提供用于测试.打包的时候并不需要,所以解决办法分两步: 1.声明tools 2.添加忽略:
- HBase基本概念
HBase是什么 HBase构建在 HDFS 之上的分布式列式键值存储系统.HBase内部管理的文件全部存储在HDFS中. HBase VS HDFS HDFS适合批处理场景 不支持数据随机查找 不适 ...
- pandas 视频讲座 from youtube
Stephen Simmons - Pandas from the inside - YouTube https://www.youtube.com/watch?v=Dr3Hv7aUkmU 2016年 ...
- ashx误删后,未能创建类型
描述 今天,因为临时有事儿,需要去一趟其他城市,项目比较赶.所以只能在车上继续敲代码,倒霉的触摸板让我误删一个ashx一般处理程序.好死不死的这个文件的代码还很长. 我的做法是[垃圾桶]→[还原]→V ...
- HDU 1171 Big Event in HDU(01背包)
题目链接 题意:给出n个物品的价值v,每个物品有m个,设总价值为sum,求a,b.a+b=sum,且a尽可能接近b,a>=b. 题解:01背包. #include <bits/stdc++ ...
- Linux的基础优化-2
1.启动网卡 ifup eth0 2.SSH链接 ifconfig 查看IP后SSH终端连接3.更新源 最小化安装是没有wget工具的,必须先安装再修改源 yum install wget 备份原系统 ...