Python3 编写登陆接口
题目选自 Alex Python自动化开发之路的题目,我是从C++转学Python的,编写的水平有限,轻喷。
- 输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次后锁定
首先应该有2个txt文件,包含用户名密码的user.txt和包含被锁定文件的lock.txt(用户名自己设定即可)
我的user.txt文件每行有一个用户名和密码 中间用空格隔开
类似:
zhu 123456
zhang 123456
lock.txt每行有一个用户名
代码如下:
# Author:Zhu count = 0
while count < 3:
username = input("请输入用户名: ")
if username == '':
exit("用户名输入错误,程序退出...")
lock_file = open("lock.txt", 'r')
lockf = lock_file.readlines()
# 锁定账号的比对
for line in lockf:
if username in line.split(): # 注意换行符的分割
exit("\033[31;1m你的账户[%s]已经被锁定,请联系管理员\033[0m" %username)
lock_file.close()
password = input("请输入密码:")
login_check = open('user.txt', 'r')
loginf = login_check.readlines()
# 登录账号和密码的对比
for line in loginf:
line = line.split()
if username == line[0] and password == line[1]:
exit("\033[32;1m登录成功!欢迎您,%s\033[0m" %username)
elif username == line[0] and password != line[1]:
pass_count = 0
while pass_count < 3:
print("\033[31;1m您的密码错误,剩余尝试次数[%s]次\033[0m" %(2-pass_count))
password_r = input("请重新输入密码:")
pass_count += 1
if password_r == line[1]:
exit("\033[32;1m登录成功!欢迎您,%s\033[0m" % username)
if pass_count == 2:
print("\033[31;1m你的密码输入错误次数已经达到最大,账号[%s]被锁定\033[0m" %username)
in_lock = open("lock.txt", 'a+')
in_lock.write(username)
in_lock.write('\n')
in_lock.close()
exit() else:
print("您的账号[%s]不存在,请注册" %username) count += 1
if count == 3:
print("您已经尝试3次,登录失败")
else:
print("请重新输入:")
为了配合登录界面功能的实现,我又写了一个注册界面的编写
Author:Zhu def username_check(username):
while True:
file_check = open('user.txt', 'r')
for line in file_check.readlines():
line = line.split()
if username == line[0]:
print("账号已经存在,请重新输入账号:")
return 0
else:
print("可以注册")
return 1
break while True:
username = input("请输入您的账户名:")
if username_check(username) == 1:
break
else:
continue
while True:
password_first = input("请输入您的密码: ")
password_second = input("请再次输入您的密码")
if password_first == password_second:
file_reg = open('user.txt', 'a+')
file_reg.write(username)
file_reg.write(' ')
file_reg.write(password_first)
file_reg.write('\n')
break
else:
print("您输入的两次密码有误,请重新输入")
continue
print("注册成功,请记住您的账号和密码\n账号:{name}\n密码:{pwd}".format
(name=username,pwd=password_first))
Python3 编写登陆接口的更多相关文章
- python之编写登陆接口(第一天)
作业:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 针对此实例写了有二种类型的脚本,略有不同,具体如下: 帐号文件account.txt内容如下: sam 123 david ...
- Python学习之编写登陆接口(Day1,作业一)
作业一:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定(下次登陆还是锁定) 知识点:while循环,for循环,文件操作,if判断,列表操作 思路: 1.登陆,三次登陆失败,锁定 ...
- day1作业:编写登陆接口
作业一:编写登陆接口 1.输入用户名和密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 思路:要求是编写登陆接口,那么要有一个存放用户信息的模块:三次后锁定,要有一个存放锁定用户信息的模块:我们知 ...
- day1作业一:编写登陆接口
作业一:编写登陆接口 1.输入用户名和密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 Readme: (1)提示用户输入用户名: (2)用户名验证,验证是否已经锁定: (3)是否锁定:已锁定告诉 ...
- 使用 Python 编写登陆接口
# 使用 Python 编写登陆接口# Create Date: 2017.10.31 Tuesday# Author: Eric Zhao# -*- coding:utf-8 -*-'''编写登陆接 ...
- python3编写登录接口
#/usr/bin/env python#yehui'''作业一:博客 作业二:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定'''import getpass, os, pic ...
- Python学习第一天-编写登陆接口
编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 帐号文件user.txt内容如下: qaz 123qwe 12345qweqwr 12321424...... 锁文件user_l ...
- python 作业 编写登陆接口
# -*- coding:utf-8 -*-import os,sysfor i in range(3):#进行3次循环 blacklist = open(r"C:\Users\Pc4\De ...
- Python之编写登陆接口
1.输入用户名密码: 2.认证成功后显示欢迎信息: 3.错误三次后,账号被锁定. 账号文件:user.txt 锁定文件:locked.txt 流程图如下: # -*- coding:utf-8 -*- ...
随机推荐
- apt --fix-broken install
1 自动修复安装出现broken的package 但是,如果还是失败的话,就需要手动进行干预了.
- ios ionic 装平台 笔记
1.安装cnpm : npm install -g cnpm --registry=https://registry.npm.taobao.org 2.An error occurred when I ...
- Android之仿今日头条顶部导航栏效果
随着时间的推移现在的软件要求显示的内容越来越多,所以要在小的屏幕上能够更好的显示更多的内容,首先我们会想到底部菜单栏,但是有时候像今日头条新闻客户端要显示的内容太多,而且又想在主界面全部显示出来,所以 ...
- NodeJs函数式编程
虽然标题是NodeJS函数式编程,但实际上NodeJS 是一个框架,不是一种语言,其采用的语言是 JavaScript.而JavaScript是一种典型的多范式编程语言,算不上是函数式语言,但它有函数 ...
- MSP430:管脚的第二功能选择
之前在使用PWM,AD时候用到过第二功能,不过都是copy没有注意过PXSEL究竟怎么设置,今天在设置晶振管脚时候遇到了麻烦,细致看了一下其实很简单,在SPEC的最后详细讲了每个管脚如何设置为其他功能 ...
- vue项目打包之后首页白屏的问题
本地的vue项目在server端浏览没问题,但是执行npm run build 打包之后在本地预览是白屏. 解决方法 1.路径问题 在config文件夹中找到index.js打开把assetsPubl ...
- ::before和::after伪元素的使用
:before和:after伪元素在CSS中可以被用来添加元素.加小标.清浮动等. 基本用法: p::before {} p::after {} 1.string <style type=&qu ...
- oracle查询时间段
select count(*) tt from crm_cisco_call_detailwhere DateTime between to_date('2016-4-5 00:00:00','yyy ...
- J20170916-hm
スタイルシート 样式表 シール 封条 シート 纸片 マニフェスト 货单(Rails) ダイジェスト 消化,(Rails 附加哈希值) インタプリタ n. 解释者; 口译译员; [军事] 判读员; [自 ...
- 原生方式实现Ajax技术
一:什么是Ajax? Ajax:异步的JavaScript和XML,用于完成网页局部刷新功能(修改少量数据只用局部刷新,不用再整个网页重新加载): XML的作用:1.是用于数据传输,但现在都在使用JS ...