作业一:编写登陆接口

1.输入用户名和密码

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

3.输错三次后锁定

思路:要求是编写登陆接口,那么要有一个存放用户信息的模块;三次后锁定,要有一个存放锁定用户信息的模块;我们知道,保存用户信息有两种方式,一种是数据库保存,一种是文件保存,现在我们只学习了文件保存,因此要有两个文件,一个是用户信息文件,一个是锁定用户信息文件。

要从文件中读取信息,添加信息,修改信息。

readme:

(1)用户输入用户名;

  (2)用户名去锁定文件中验证是否锁定;如果锁定让用户联系管理员解决;

(3)如果没有锁定去用户文件验证用户是否存在,存在让用户输入密码,输入成功后显示欢迎信息;输错三次后锁定用户;

(4)如果用户不在用户文件中,提示用户没有注册,需要注册,编写注册模块,让用户注册,注册之后添加用户到用户列表中,并且显示欢迎信息,不让用户在进行输入,自动链接到登录状态。

    流程图如下:

  1. active = None
  2. #程序执行的标识符
  3.  
  4. def verification(username):
  5. """验证用户是否锁定"""
  6. locked_users = []
  7. with open("locked_file") as locked_f:
  8. for line in locked_f:
  9. locked_user,locked_pwd = line.split(":")
  10. locked_users.append(locked_user)
  11. print(locked_users)
  12. if username in locked_users:
  13. print("对不起,你的用户名已经被锁定,请联系管理员!")
  14. else:
  15. active = True
  16. return active
  17.  
  18. def is_registered(username):
  19. """验证用户是否注册,注册就让用户登录,未注册让用户选择重新输入或者注册"""
  20. users = {}
  21. with open("active_file","r+") as f:
  22. for active_line in f:
  23. user,pwd = active_line.split(":")
  24. users[user] = pwd
  25.  
  26. if username in users.keys():
  27. test_num =
  28. while test_num < :
  29. user_pwd = input("请输入您的密码:")
  30. if user_pwd == users[username]:
  31. print("welcome back,have a good time!")
  32. return False
  33. else:
  34. test_num +=
  35. else:
  36. #用户输入三次以上锁定用户,使用的是while...else...方法
  37. print("对不起,你输入的次数过多,你的用户已经被锁定,请联系管理员!")
  38. mes = "\n" + username + ":" + users[username]
  39. with open("locked_file","a") as f1:
  40. f1.write(mes)
  41. return False
  42. else:
  43. print("您输入的用户名不存在,请按照下面的提示选择!")
  44. print("注册:请输入1\n登录:请输入2")
  45. num = input("请输入你的选择:")
  46. if num == "":
  47. register_name = input("请输入你要注册的用户名:")
  48. while True:
  49. register_pwd = input("请输入你的密码:")
  50. register_pwd2 = input("请再次输入你的密码:")
  51. if register_pwd == register_pwd2:
  52. break
  53. else:
  54. print("您输入的密码不对,请重新输入")
  55. message = "\n" + register_name + ":" + register_pwd
  56. print("Thank for your registing,have a good time!")
  57. with open("active_file","a") as f_obj:
  58. f_obj.write(message)
  59. return False
  60.  
  61. elif num == "":
  62. user_name = input("请重新输入你的用户名:")
  63. verification(user_name)
  64.  
  65. if __name__ == "__main__":
  66.  
  67. username = input("请输入你的用户名:")
  68. active = verification(username)
  69. while active:
  70. active = is_registered(username)

上面代码实现了验证和锁定的功能,也实现了新用户的注册功能,但是有一个缺陷,就是当用户锁定的时候没有从这个当前文件中删除,添加到锁定用户信息的文件中,往文件中添加信息很简单,但是从文件中删除一条信息却不是很简单,不能像列表那样随心所欲的操作。只能先进行转换,而且列表中操作文件的时候,换行符等等这些东西有很恶心。上面代码会进行如下转换,学习本来就是一件繁琐的事情,但是也要去做的完美,下面会参考别人写的代码,学习一下别人如何实现文件中不需要的信息的删除,然后好好完善一下上面的代码。

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

  1. python 作业 编写登陆接口

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

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

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

  3. day1作业一:编写登陆接口

    作业一:编写登陆接口 1.输入用户名和密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 Readme: (1)提示用户输入用户名: (2)用户名验证,验证是否已经锁定: (3)是否锁定:已锁定告诉 ...

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

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

  5. day1作业:登录接口

    作业一:编写登陆接口 1.输入用户名和密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 思路: (1)用户输入用户名: (2)去锁定文件中验证用户名是否锁定: (3)去当前用户验证用户是否存在: ...

  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. day1 作业编写登录窗口

    作业一:编写登录接口 (1)输入用户名和密码: (2)认证成功后显示欢迎信息: (3)输错三次后锁定. 思路:我们知道,要想让程序记住之前输入多少次,锁定用户,那么可以使用数据库来保存用户的状态,然而 ...

  9. Python之编写登陆接口

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

随机推荐

  1. python——type()、metaclass元类和精简ORM框架

    1.type()函数 if __name__ == '__main__': h = hello() h.hello() print(type(hello)) print(type(h)) Hello, ...

  2. Java基础-面向对象第一特性之封装(Encapsulation)

    Java基础-面向对象第一特性之封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.理解什么是面向过程和面向对象 面向过程与面向对象都是我们编程中 ...

  3. 机器学习算法整理(五)决策树_随机森林——鹃尾花实例 Python实现

    以下均为自己看视频做的笔记,自用,侵删! 还参考了:http://www.ai-start.com/ml2014/ In [8]: %matplotlib inline import pandas a ...

  4. 使用object_box遇到的崩溃 java.lang.UnsatisfiedLinkError:

    java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/ ...

  5. 【转】Elastic日报 第576期 (2019-04-05)

    1.Elasticsearch性能测试实践http://t.cn/EiRzFiI2.监控Elasticsearch的插件推荐http://t.cn/EiRzFix3.支持机器数据的可扩展Elastic ...

  6. 奇葩字符 "a๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎" 的简单分析

    这个其实之前火过一阵子,当时也没怎么注意,今天看到空间里又有人在刷这个字符了,所以决定分析下他是什么东西.复制这个字符在控制台查看 "a๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎".l ...

  7. python核心编程笔记——Chapter5

    好吧,开始第五章习题: 5-2.又是老调重谈,raw_input这个函数真是非常麻烦,返回是str类型,没办法,只能在函数里面使用int内建.(就只是一道简单的两数相乘,哭了) #!/usr/bin/ ...

  8. Python练习-迭代器-模拟cat|grep文件

    代码如下: # 编辑者:闫龙 def grep(FindWhat): f=open("a.txt","r",encoding="utf8") ...

  9. 【译】第九篇 Replication:复制监视器

    本篇文章是SQL Server Replication系列的第九篇,详细内容请参考原文. 复制监视器允许你查看复制配置组件的健康状况.这一篇假设你遵循前八篇,并且你已经有一个合并发布和事务发布.启动复 ...

  10. 《区块链100问》第81集:应用类项目Augur

    Augur是基于以太坊区块链打造的去中心化预测平台,于2015年6月正式发布,是以太坊上的第一款应用. Augur采用了一个叫“群体智慧”的概念,它的意思是,一群人的智慧会高于这群人中最聪明的人.所以 ...