README

  

 # README.md #

 day001-work-1

         @南非波波

 功能实现:登录接口

 流程图:

 ![](http://i.imgur.com/61eFd0u.jpg)

 程序实现:

     1.设置功能函数:
Welcome(LoginFlag):根据LoginFlage返回不同的信息
UserBlack():黑名单列表判断UsersName是否被锁定
UserBlackAdd(Users):添加UsersName到黑名单
Login(Passwd):用户登录函数
2.函数调用
Login(Passwd)函数调用UserBlack()函数,先判断UsersName是否在黑名单中;
Login(Passwd)函数根据用户输入的判断情况,调用Welcome(LoginFlag)函数返回不同的提示信息;
Login(Passwd)函数在执行满三次正常结束之后调用UserBlackAdd(Users)函数,将用户所输入Users添加到黑名单列表;
3.主函数入口:
if __name__ == '__main__':
代码地址: https://github.com/swht/projects/tree/master/day01/work-1 博客地址: http://www.cnblogs.com/songqingbo/p/5091808.html 测试账号: users:qingbo
passwd:test

README

流程图:

  

程序代码:

login.py

#!/usr/local/env python3
'''
Author:@swht
Blog:http://www.cnblogs.com/songqingbo/
E-mail:qingbo.song@gmail.com
'''
import os,sys,time UserName = "qingbo"
UserPasswd = "test"
UserBlackPath = "./user_black.txt" def Welcome(LoginFlag):
'''欢迎信息页面'''
if LoginFlag == "True":
print ("Welcome login the System!")
if LoginFlag == "Error":
print ("Sorry,your passwd is Error!")
if LoginFlag == "False":
print ("Sorry,your userName is not have!")
if LoginFlag == "Space":
print("Sorry,your input is null!")
def UserBlack():
'''黑名单判断'''
if os.path.exists(UserBlackPath): #判断黑名单文件是否存在
FileUsers = open(UserBlackPath) #打开黑名单文件
UserBlack = FileUsers.read() #读取黑名单文件内容
FileUsers.close() #关闭黑名单文件句柄
if UserName == UserBlack: #判断黑名单列表中用户名称是否与指定userName相同
print ("Sorry,your name is in the blacklist,Please to connet the admin!")
sys.exit(1) #若相同提醒用户‘该用户在黑名单列表中’并且退出程序
def UserBlackAdd(Users):
'''黑名单列表增加'''
print ("Your name is now to add the blacklist!")
FileUsers = open(UserBlackPath,"w")
FileUsers.write(Users)
FileUsers.close()
sys.exit(0) def Login(Passwd):
'''用户登录接口函数'''
global Users
UserBlack(); #黑名单不存在或者用户名没在列表中执行while循环
while True:
Users = input("users:").strip() #获取用户输入且去除首尾空格符
if Users == '':
Welcome("Space")
break
else:
if Users == UserName: #判定用户名是否正确
Passwd = input("passwd:").strip()
if Passwd == '':
Welcome("Space")
break
else:
if Passwd == UserPasswd: #判断用户密码是否正确
Welcome("True"); #用户名和密码都正确,调用登录成功接口
time.sleep(1)
sys.exit(0)
else:
Welcome("Error"); #密码错误调用密码错误提示接口
break
else:
Welcome("False"); #用户名和密码错误调用相应提示接口
break
#main
if __name__ == '__main__':
for i in range(3): #允许用户输错3次
Login("Passwd");
if Users == '':
print("Sorry,users is null,the system is quit a later!")
time.sleep(1)
sys.exit(1)
else:
UserBlackAdd(Users);

github更新地址:

  https://github.com/swht/projects/tree/master/day01/work-1

附录:优化后代码

github更新地址:https://github.com/swht/projects/tree/master/day01/work-1.1

mian.py

 #!/usr/local/env python3
'''
Author:@南非波波
Blog:http://www.cnblogs.com/songqingbo/
E-mail:qingbo.song@gmail.com
''' import checkinput,login,addusers
import time,sys def main():
Choose = input('''
==============================================
欢迎光临南非波波小屋!
==============================================
[1]注册 [2]登录 [3]退出
请选择相应指令:''').strip()
if Choose == '':
print("指令不能为空,请输入正确指令!")
else:
if Choose.isdigit():
Choose = int(Choose)
if Choose >= 1 and Choose <= 3:
if Choose == 1:
addusers.AddUsers()
if Choose == 2:
login.Login()
if Choose == 3:
print("欢迎下次光临南非波波小屋!")
time.sleep(1)
sys.exit(0)
else:
print("你输入的指令已超出范围,请按照系统指令进行输入!")
else:
print("请输入正确的指令,指令为整数型数字!") #main
if __name__ =="__main__":
main()

mian.py

addusers.py

 #!/usr/local/env python3
'''
Author:@南非波波
Blog:http://www.cnblogs.com/songqingbo/
E-mail:qingbo.song@gmail.com
'''
import getpass,sys,time
import checkinput,main UsersListPath = "./userslist.txt" #判断用户输入的是否符合要求
def AddUsers():
print('''
==============================================
欢迎加入南非波波小屋
==============================================''')
CountFlag1 = 0
CountFlag2 = 0
while True:
if CountFlag1 < 3:
User = input("请输入你的用户名:").strip()
if User == '':
print("你的输入为空,请重新输入!")
CountFlag1 += 1
CountFlag2 += 1
else:
if len(User) >= 4 and len(User) <= 10:
if checkinput.AddUsersList(User) == True:
print("该用户已被注册!")
else:
while True:
if CountFlag2 < 3:
Passwd1 = getpass.getpass("请输入你的密码:").strip() #getpass.getpass()可以将用户输入的密码以暗文形式实现
if Passwd1 == '':
print("你的输入为空,请重新输入!")
CountFlag2 += 1
elif len(Passwd1) < 6:
print("你的密码太简单,请重新输入!")
CountFlag2 += 1
else:
Passwd2 = getpass.getpass("请再次输入你的密码:").strip()
if Passwd1 == Passwd2:
db = {"user":User,"passwd":Passwd1}
UsersListFile = open(UsersListPath,"a")
UsersListFile.write(str(db))
UsersListFile.write('\n')
UsersListFile.close() #直接调用增加用户接口
main.main()
else:
print("你两次输入的密码不一致,请重新输入!")
CountFlag1 += 1
else:
print("你输入的错误次数已达3次!系统将返回主页!")
main.main()
else:
print("请输入4-10位字符或数字组合作为用户名!")
CountFlag1 += 1
else:
print("你输入的错误次数已达3次!系统将退出!感谢你对南非波波小屋的支持!")
time.sleep(1)
sys.exit(1) # AddUsers()

addusers.py

login.py

 #!/usr/local/env python3
'''
Author:@南非波波
Blog:http://www.cnblogs.com/songqingbo/
E-mail:qingbo.song@gmail.com
'''
import sys,time,getpass
import checkinput,main def Login():
'''用户登录接口函数'''
CountFlag1 = 0 #用户输入错误次数的统计
CountFlag2 = 0 #用户输入为空的次数统计
print('''
==============================================
欢迎光临南非波波小屋
==============================================''')
while True:
if CountFlag1 < 3:
if CountFlag2 < 3:
Users = input("请输入登录用户名:").strip() #获取用户输入且去除首尾空格符
if Users == '':
print("你的输入为空,请重新输入!")
CountFlag1 += 1
CountFlag2 += 1
else:
checkinput.UserBlack(Users) #黑名单不存在
Passwd = getpass.getpass("请输入你的密码:").strip()
if Passwd == '':
print("密码不能为空,请重新入")
CountFlag1 += 1
CountFlag2 += 1
else:
if checkinput.LoginUsersList(Users,Passwd) == True:
print("%s你好,欢迎光临南非波波小屋,今天是%s" % (Users,(time.strftime('%Y-%m-%d\t%H:%M:%S',time.localtime(time.time())))))
time.sleep(1)
sys.exit(0)
elif checkinput.LoginUsersList(Users,Passwd) == False:
print("你输入的用户名不存在!请先注册后再登录!")
main.main()
else: #其他情况就报用户名或密码错误
print("你输入的用户名或密码错误!")
CountFlag1 += 1
else:
print("你输入的错误次数已达3次,系统将返回主页!")
main.main()
else:
print("你输入的错误次数已达3次,系统将退出")
if Users == '': #如果用户输入为空将直接退出
sys.exit(1)
else: #如果用户输入不为空将用户最后输入错误的users加到黑名单列表
checkinput.UserBlackAdd(Users) # Login()

login.py

checkinput.py

 #!/usr/local/env python3
'''
Author:@南非波波
Blog:http://www.cnblogs.com/songqingbo/
E-mail:qingbo.song@gmail.com
'''
import os,sys,time UsersListPath = "./userslist.txt"
UserBlackPath = "./userblacklist.txt"
#获取文件内容的行数
def Countnum(filename):
files = open(filename)
data = files.read()
files.flush()
files.close()
return data.count('\n') #判断用户是否在黑名单中
def UserBlack(UserName):
'''黑名单判断'''
if os.path.exists(UserBlackPath): #判断黑名单文件是否存在
FileUsers = open(UserBlackPath) #打开黑名单文件
for UserBlack in FileUsers.readlines(): #读取黑名单文件内容
if UserName == UserBlack: #判断黑名单列表中用户名称是否与指定userName相同
print("对不起,该用户已在系统黑名单列表中,请联系管理员!")
time.sleep(1)
sys.exit(1) #若相同提醒用户‘该用户在黑名单列表中’并且退出程序
FileUsers.close() #关闭黑名单文件句柄 #将用户添加到黑名单中
def UserBlackAdd(Users):
'''黑名单列表增加'''
print("该用户将被家到系统黑名单中...")
FileUsers = open(UserBlackPath,"a")
FileUsers.write(Users)
FileUsers.close()
sys.exit(0) #判断用户是否存在userlist列表中
def AddUsersList(Users):
if os.path.exists(UsersListPath): #判断文件存在
if Countnum(UsersListPath) == 0: #判断文件内容为空
return False
else:
UsersListFile = open(UsersListPath,'r')
for lines in UsersListFile.readlines():
db = lines.strip("\n").strip() #去除换行符
db = eval(db) #将字符串类型转换成字典类型
if Users == db['user']:
return True #返回True值说明用户名匹配成功
UsersListFile.close()
else: #文件不存在
return False #返回False值说明黑名单文件不存在或为空 #判断用户是否存在userlist列表中
def LoginUsersList(Users,Passwd):
if os.path.exists(UsersListPath): #判断文件存在
if Countnum(UsersListPath) == 0: #判断文件内容为空
return False
else:
UsersListFile = open(UsersListPath,'r')
for lines in UsersListFile.readlines():
db = lines.strip("\n").strip() #去除换行符
db = eval(db) #将字符串类型转换成字典类型
if Users == db['user']:
if Passwd == db['passwd']:
return True #返回True值说明用户名和密码匹配成功
UsersListFile.close()
else: #文件不存在
return False #返回False值说明黑名单文件不存在

checkinput.py

s12-day01-work01用户登录接口的更多相关文章

  1. 齐博x1.1用户登录接口

    用户的登录主要涉及到小程序登录.APP的帐号密码登录.APP的微信开发平台帐号登录.相应的地址是:http://qb.net/index.php/index/wxapp.login/index.htm ...

  2. ASP.NET Core的身份认证框架IdentityServer4--(5)自定义用户登录(通过接口登录,无UI版本)

    官网接口详解文档地址:文档地址 (PS:可通过接口名称搜索相应接口信息.) 源码地址:https://github.com/YANGKANG01/IdentityServer4-IdentityAut ...

  3. python练习--1、简易登录接口

    function:用于实现简单的用户登录接口. description:用户信息存储于字典中,增加用户需手动写入代码中.最多可以尝试登录9次,首次使用会先在程序目录下创建锁文件.若在用户栏输入quit ...

  4. [springboot 开发单体web shop] 5. 用户登录及首页展示

    用户登录及前端展示 用户登录 在之前的文章中我们实现了用户注册和验证功能,接下来我们继续实现它的登录,以及登录成功之后要在页面上显示的信息. 接下来,我们来编写代码. 实现service 在com.l ...

  5. Django商城项目笔记No.10用户部分-登录接口

    Django商城项目笔记No.10用户部分-登录接口 添加url路由 接下来第二步,增加返回内容: 增加结果如下: 配置:上边的方法定义了返回的内容都有哪些,那这个方法jwt还不知道,需要配置: 修改 ...

  6. day102:MoFang:后端完成对短信验证码的校验&基于celery完成异步短信发送&flask_jwt_extended&用户登录的API接口

    目录 1.用户注册 1.后端完成对短信验证码的校验 2.基于celery实现短信异步发送 2.用户登录 1.jwt登录验证:flask_jwt_extended 2.服务端提供用户登录的API接口 1 ...

  7. python3 用户登录 day01

    '''用户登录作业需求:1. 三次重试机会2. 每次输错误时显示剩余错误次数'''num = 1while num <= 3: username = input("请输入用户名:&qu ...

  8. .NET跨平台之旅:ASP.NET Core从传统ASP.NET的Cookie中读取用户登录信息

    在解决了asp.net core中访问memcached缓存的问题后,我们开始大踏步地向.net core进军——将更多站点向asp.net core迁移,在迁移涉及获取用户登录信息的站点时,我们遇到 ...

  9. Spring MVC学习笔记——完整的用户登录

    1.搭建环境的第一步是导包,把下面这些包都导入工程中 /media/common/工作/Ubuntu软件/SpringMVC_jar包整理/aop/media/common/工作/Ubuntu软件/S ...

随机推荐

  1. GO_01:Mac之Go语言Idea环境配置

    声明:本人所使用的是Mac Pro 安装开始 1. 首先将 GO 基础组件安装好,就好似 java 中的 jdk.当然,安装的时候需要到官网去下载,这一步难倒了好多无法FQ的同学们,故这里我将我这边下 ...

  2. Integer.parseInt不同jdk源码解析

    执行以下代码: System.out.println(Integer.parseInt("-123")); System.out.println(Integer.parseInt( ...

  3. python net-snmp使用

    安装 官网:http://www.net-snmp.org/download.html 环境:CentOS 6.6 + python 2.7.10 1.下载安装包 net-snmp-5.6.2.1.t ...

  4. JS动态更新微信浏览器中的title

    问题: 最近在做一个微信中分享的宣传页,分不同的场景,切换不同的场景时需要设置不同的title,实现的方案很简单,当用户切换场景的时候,修改document对象的title属性,可是在实际测试中,io ...

  5. idea注册码激活防和谐

    1.到网站 http://idea.lanyus.com/ 获取注册码: 2.修改hosts文件,位于C:\Windows\System32\drivers\etc,添加一行,win10推荐使用not ...

  6. 《设计模式》-原则二:里氏代换原则(LSP)

    回顾一下上一节说的“开闭原则” 说的是 一个软件要遵循对修改关闭 对新功能扩展的原则. 这一次来说说 “里氏代换原则” 意思是说:子类型必须能代替他们的基类. 看了半天的例子 好像 是懂非懂啊...相 ...

  7. 为FreeBSD安装adobe flash插件

    参考 FreeBSD官方手册浏览器一章. pkg install nspluginwrapper nspluginwrapper 是一个辅助安装配置 NetScape Plugin的工具. 可以为Ne ...

  8. php中global和$GLOBALS最浅显易懂的解释

    官方文档: global指对变量的引用或者叫指针,$GLOBALS则是变量本身: $var1 = 1; $var2 = 2; function fun(){ $GLOBALS['var2'] = &a ...

  9. App测试需注意

    APP测试的时候,建议让开发打好包APK和IPA安装包,测试人员自己安装应用,进行测试.在测试过程中需要注意的测试点如下: 1安装和卸载 ●应用是否可以在iOS不同系统版本或Android不同系统版本 ...

  10. Dream------scala--开发环境搭建

    scala简介: scala是一门函数式编程和面向对象编程结合的语言 函数式编程非常擅长数值计算而面向对象特别适合于大型工程或项目的组织以及团队的分工合作 我们借助scala可以非常优雅的构造出各种规 ...