要求:编写登录接口

1. 输入用户名和密码

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

3. 输错三次后锁定


1)编写思路

编写思路参考下面GitHub链接中的流程图

https://github.com/ChuixinZeng/PythonStudyCode/blob/master/PythonCode-OldBoy/Day1/作业/Day1_作业_登录接口流程图.png


2)具体实现

 1 # -*- coding:utf-8 -*-
 2
 3 # Author:Chuixin Zeng
 4
 5 # 字典和列表的区别:列表是有顺序的,使用索引访问;而字典中的条目是用键来访问的
 6
 7 # 初始化空字典
 8 _user_dict = {}
 9 # 初始化空列表list,有了空的列表之后,程序就可以向这个列表中增加元素
10 _user_list = []
11 # 初始化登录不存在用户名的初始值为0
12 _login_error_count = 0
13
14 # 使用while开始无限制的循环
15 while True:
16     # 交互式输入登录用户名和密码
17     _user_naming = input("Pls input your username:")
18     _user_password = input("Pls input your password:")
19     # 读取用户登录数据文件UserPassword.txt
20     _users_data = open('UserPassword.txt')
21     # 循环遍历打开的数据,对打开的数据进行格式化操作,然后把格式化以后的数据保存到创建好的_user_dict字典当中
22     for user_data in _users_data:
23         # 使用strip去除user_data数据行中的前后空格
24         _user_list = user_data.strip()
25         # 将去除前后空格之后的数据行_user_list使用逗号进行分割,并重新保存到_user_datas中
26         _user_datas = _user_list.split(',')
27         # 将_user_datas数据行中的第0个位置的数据(即用户名),去除前后空格后,赋给新的变量_user_name
28         _user_name = _user_datas[0].strip()
29         # 将_user_datas数据行中的第1个位置的数据(即密码),去除前后空格后,赋给新的变量_user_pass
30         _user_pass = _user_datas[1].strip()
31         # 将_user_datas数据行中的第2个位置的数据(即锁定状态,0代表未锁定,1代表锁定),去除前后空格后,赋给新的变量_user_locked
32         _user_locked = _user_datas[2].strip()
33         # 将_user_datas数据行中的第3个位置的数据(即密码输入错误次数),去除前后空格后,赋给新的变量_user_error_count
34         # 将_user_datas[3]的数据类型强制转换为int
35         _user_error_count = int(_user_datas[3].strip())
36         # 将前面定义好的变量信息,保存到字典中,为前面的值指定键名,即键:值对应的关系,键名可以随便起,建议考虑易读性
37         # 如果下面的键名出线下划波浪线,并不代表有语法错误,而是编辑器认为拼写的英文不是正确的英文单词,不影响脚本执行
38         # 按照Python的编程规范,在逗号和冒号后面需要加一个空格
39         _user_dict[_user_name] = {'name': _user_name, 'password': _user_pass,
40                                   'locked': _user_locked, 'errorcount': _user_error_count}
41
42     # 关闭打开的UserPassword.txt文件
43     _users_data.close()
44
45     # 判断用户账户是否已经被锁定,将前面交互界面输入的用户名和字典里保存的用户名列进行匹配
46     # 将前面交互式输入的用户名和字典中的userlocked键进行匹配,如果用户名对应的键为1,就是被锁定了,退出登录
47     if _user_naming in _user_dict.keys():
48         if _user_dict[_user_naming]['locked'] == '1':
49             print("The account was locked,pls contact administrator!")
50             break
51         # 将前面输入的用户名、密码和字典中的用户名、密码进行匹配,如果成功,则输出登录系统,然后退出
52         if _user_naming == _user_dict[_user_naming]['name'] and _user_password == _user_dict[_user_naming]['password']:
53             print("Welcome to System!")
54             break
55         else:
56             # 如果用户名在字典里,但是密码不对,将前面输入的用户名所对应字典中的错误次数进行自增
57             _user_dict[_user_naming]['errorcount'] += 1
58             # 如果用户名输入正确的情况下,密码输入错误的次数小于3次,给用户重新尝试的机会
59             if _user_dict[_user_naming]['errorcount'] < 3:
60                 print("The password was wrong,pls try again,your have three chance!")
61                 # 追加写入新的数据到UserPassword.txt,其中的errorcount会随着失败尝试次数的增加而增加,三次就是2,即0,1,2
62                 _write_data = open('UserPassword.txt', 'w+')
63                 # 将字典里面的值取到_user_value中,进行循环遍历
64                 for _user_value in _user_dict.values():
65                     # 往脚本开头定义好的空列表里面逐行写入数据
66                     _user_list = [_user_value['name'], _user_value['password'], str(_user_value['locked']),
67                                   str(_user_value['errorcount'])]
68                     # 将写入到_user_list的数据再次进行格式化后赋给_users_list
69                     _users_list = ','.join(_user_list)
70                     # 将_users_list中的数据写入到UserPassword.txt中,并在每一行数据的结尾进行换行
71                     _write_data.write(_users_list + '\n')
72                 # 关闭UserPassword.txt文档
73                 _write_data.close()
74
75             else:
76                 # 如果密码不正确的次数已经超过3次,就输出账户被锁定
77                 print("You try three times,Account locked")
78                 # 输出账户锁定的同时,将字典中locked键的值设置为1,这个地方改成1,前面判断Locked状态的IF才生效
79                 _user_dict[_user_naming]['locked'] = 1
80                 # 账户设置为锁定之后,将用户对应的错误密码次数清零,我理解的是锁定属性为1了,错误次数可以清零
81                 _user_dict[_user_naming]['errorcount'] = 0
82                 _write_data = open('UserPassword.txt', 'w+')
83                 for _user_value in _user_dict.values():
84                     _user_list = [_user_value['name'], _user_value['password'], str(_user_value['locked']),
85                                   str(_user_value['errorcount'])]
86                     _users_list = ','.join(_user_list)
87                     _write_data.write(_users_list + '\n')
88                 _write_data.close()
89                 break
90
91
92     else:
93         # 如果用户名不存在,则输出信息
94         print("Pls ensure input currect account or password,you can try three times!")
95         # 程序开头设置了初始化不存在用户名的值为0,这里进行自增
96         _login_error_count += 1
97         # 如果不存在的用户尝试次数超过3次,则中断程序
98         if _login_error_count > 2:
99             break


3)Github笔记

第一天的笔记的地址是:

https://github.com/ChuixinZeng/PythonStudyCode/tree/master/PythonCode-OldBoy/Day1/随堂练习

第一天作业的地址是:

https://github.com/ChuixinZeng/PythonStudyCode/tree/master/PythonCode-OldBoy/Day1/作业


4)Readme.md文档

https://github.com/ChuixinZeng/PythonStudyCode/blob/master/PythonCode-OldBoy/Day1/作业/Readme_登陆接口.md

转载于:https://www.cnblogs.com/ChuixinZeng/p/JamieZeng_Day1.html

老男孩Day1作业(一):编写登录接口相关推荐

  1. Day1 - Python基础1作业【编写登陆接口】

    1 # 作业:编写登陆接口 2 # 输入用户名密码 3 # 认证成功后显示欢迎信息 4 # 输错三次后锁定 5 import getpass 6 7 user = {'hepd':123456, 'h ...

  2. python编程用户登陆c_python编写登录接口(上)

    中途经过了好几天都没有动手了,得坚持下去啊 刚看了Alex老师的视频,其中有个题目如下: 编写登录接口 -输入用户密码 -认证成功后显示欢迎信息 -输错三次后锁定 # -*- coding: cp93 ...

  3. python编写登录接口_使用python编写一个登录接口

    需求: 编写登录接口 输入用户名密码 认证成功后 显示欢迎信息 输入三次后锁定 用户信息文件 黑名单的文件 黑名单里检查,不让登录 用户名密码判定 流程图: 代码:#!/usr/bin/env pyt ...

  4. 老男孩Day1作业(二):编写多级菜单

    要求:编写多级菜单 1.三级菜单 2.可依次进入各子菜单 3.菜单能够回到上一级 4.用到知识点:字典.列表.多层循环.函数 1)编写思路 编写思路参考下面GitHub链接中的流程图 https:// ...

  5. python编写登录接口与三级菜单小程序

    一:登录接口 编写思路 python登录接口登录三次失败锁定: 一:建一个数据库文件保存用户名和密码,用来判断用户是否存在 二:用户锁定文件,当用户登录三次错误后记录用户信息进入锁定文件,下次登录时就 ...

  6. day1:作业 编写登录接口并画出相应的流程图

    作业要求: 1.输入用户名密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 代码如下 _user_list =[] _user_dict = {} _login_error_count = 0 w ...

  7. 老男孩Day2作业:编写购物车程序

    作业要求 1.启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4.可随 ...

  8. python编写登录接口_Python之编写登录接口

    输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 帐号文件account.txt内容如下: liuyueming 123 zhangsan 123 lisi 123 锁文件account_loc ...

  9. python编写登录接口_每日一题.PYTHON编写简单登录接口?

    原文数据: user_db.txt root:root_admin admin:admin_root lock_db.txt admin 具体要求: 1.输入用户名密码 2.认证成功后显示欢迎消息 3 ...

最新文章

  1. K12(在线学习的平台)
  2. 排序命令: sort, wc, uniq
  3. 一组图诠释CNN及RNN的区别
  4. 第三篇——第二部分——第六文 监控SQL Server镜像
  5. python输入数据的维度_keras分类模型中的输入数据与标签的维度实例
  6. 编译原理实验报告_任意给定一个正规式 r (包括连接、或、闭包运算),根据 Thompson算法设计一个程序,生成与该正规式等价的 NFA N 。
  7. 关于VerifyError
  8. guava 并发_Google Guava并发– ListenableFuture
  9. SQL50道练习题(1-15)
  10. [转]Python3之max key参数学习记录
  11. 捷宇高拍仪XY530 网页集成总结
  12. 开关二极管的工作原理
  13. Android保存图片到系统图库并通知系统相册刷新
  14. smbcontrol - 向smbd或nmbd进程发送消息
  15. 交换机和路由器的基本配置
  16. 【FaceRevelio】一种用于智能手机的带有前置摄像头的 人脸活跃度检测系统
  17. Element表格之表头合并、行合并和列合并
  18. echarts迁徙效果
  19. 关于邮件服务器的dns解析及mx记录问题!
  20. 2017年Java就业前景和工资待遇

热门文章

  1. C#中的thread和task之 Thread ThreadPool
  2. 如何在不亏本的情况下构建道德数据科学系统?
  3. pca 主成分分析_六分钟的主成分分析(PCA)的直观说明。
  4. xml格式是什么示例_什么是对抗示例?
  5. 愿你白天有说有笑,晚上睡个好觉
  6. “不要尝试欺骗我一个吻”(奥·安达尔摄影展)
  7. java abstractset 继_java集合框架-AbstractSet
  8. mysql 的驱动是多少_mysql驱动参数变化
  9. mysql中如何删除多个表格_mysql怎么批量删除多个表?
  10. numpy安装_Python进阶之NumPy快速入门(一)