博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python之登录接口
阅读量:4543 次
发布时间:2019-06-08

本文共 1888 字,大约阅读时间需要 6 分钟。

要求

1.输入用户名密码

2.认证成功后显示欢迎信息
3.输错三次后锁定

思路

没有数据库,这里使用本地文件,一共需要两个文件:

      黑名单的文件:黑名单里检测,不让登录

     用户信息文件:将已有的用户信息存放在此文件

1.首先检测黑名单是否有该用户,如果有就强制退出程序

这里检测的方式一共有两种方式:

方式一:

1 username = input('请输入用户名:')2 with open(locked_file, 'r') as lock_f:  # 先检测黑名单是否有用户名3     lines = []4     for line in lock_f.readlines():5         lines.append(line.strip())6     if username in lines:7         sys.exit('用户 %s 已经被锁定!' % username)

方式二:

1 username = input('请输入用户名:')2 with open(locked_file, 'r') as lock_f:  # 先检测黑名单是否有用户名3     lines = []4     for line in lock_f.readlines():5         if len(line)==0:6             continue7         if username == line.strip():8             sys.exit('用户 %s 已经被锁定!' % username)

2.如果检测黑名单里面没有该用户,就输入密码,然后就去用户信息文件中匹配用户名和密码

1         with open(account_file,'r') as account_f: # 在用户信息文件中检测密码2             flag = False3             for line in account_f.readlines():4                 user,pawd = line.strip().split()5                 if username == user and password == pawd:6                     print("success!")7                     print("欢迎 %s 来到后台登录系统" %username)8                     flag=True9                     break # 退出当前for循环

3.在用户信息文件中匹配成功则成功进入系统,如果没有匹配成功就继续输入

4.继续输入的过程中对输入次数计数,当次数达到限制还没有成功匹配就将该用户加入黑名单然后退出程序。当次数没有达到限定次数然后匹配成功,就成功进入系统。

将用户名写入黑名单:

1 def deny_account(username):2     print("您的用户已被锁定!")3     with open(locked_file,'a') as deny_f:4         deny_f.write('\n'+username)

完整代码

1 import sys 2  3 account_file = 'D:\match.txt' 4 locked_file = 'D:\locked.txt' 5  6 # 当用户输入错误操作三次将用户的用户名添加进黑名单文件 7 def deny_account(username): 8     print("您的用户已被锁定!") 9     with open(locked_file,'a') as deny_f:10         deny_f.write('\n'+username)11 # 主文件12 def main():13     retry_count = 0 # 计数器14     retry_limit = 3 # 次数限制15     while retry_count

注意:

  这里目前有一个bug,这里的计数是对输入用户名的次数进行计数,而不是根据某个具体的用户名进行计数,因此这里还需要改进。各位博友有好主意的可以顶起来哦!

转载于:https://www.cnblogs.com/wanghao123/p/7941748.html

你可能感兴趣的文章
微信小程序的坑坑
查看>>
图片轮播(Jquery)
查看>>
hdu 1704 Rank(floyd传递闭包)
查看>>
Educational Codeforces Round 27 G. Shortest Path Problem?(Guass异或线性基)
查看>>
【BZOJ3622】已经没有什么好害怕的了(动态规划+广义容斥)
查看>>
HDOJ 1023 Train Problem II
查看>>
途牛订单的服务化演进
查看>>
软件工程之四则运算
查看>>
ABAP 根据权限显示或隐藏状态栏的按钮
查看>>
跑步计划
查看>>
mvc中使用uploadify批量上传的应用
查看>>
Kibana查询说明
查看>>
[AHOI 2009]chess 中国象棋
查看>>
UVA 11990 ”Dynamic“ Inversion(线段树+树状数组)
查看>>
Hibernate学习四----------Blob
查看>>
CTF-练习平台-Misc之 中国菜刀,不再web里?
查看>>
Mac系统配置JDK环境变量
查看>>
多项式累加
查看>>
剑指offer(18)二叉搜索树的后续遍历
查看>>
微信小程序一笔记账开发进度四
查看>>