题目:Python实现三次登陆

不要急于马上把三次登陆写出来,一定要将复杂的程序简单化,必须一步一步地去扩展,这样才保证不会出错。

步骤一:实现简单的一次登陆

# 事先定义
user = 'dark_knight'
pwd = 'dk123' username = input('Please enter username:')
password = input('Please enter password:') # 判断
if username == user and password == pwd:
print('Login successfully!')
else:
print('Login failed!')

步骤二:实现简单的三次登陆

# 事先定义
user = 'dark_knight'
pwd = 'dk123'
count = 1 # 定义次数 while True:
if count == 4: # 大于3次则退出循环
print('Too many times!')
break
username = input('Please enter username:')
password = input('Please enter password:') # 判断
if username == user and password == pwd:
print('Login successfully!')
break
else:
print('Login failed!') count += 1 # 每次循环都次数都进行加1操作

  

步骤三:解决三次登陆中的BUG

1、去除字符串两边的空格

2、当用户输入None时则提示用户反复输入。

3、当用户输入的信息不匹配时则告诉用户还有几次机会。

# 事先定义
user = 'dark_knight'
pwd = 'dk123'
count = 1 # 定义次数 while True:
if count == 4: # 大于3次则退出循环
print('Too many times!')
break
username = input('Please enter username:').strip() # 去除字符串两边的空格
password = input('Please enter password:').strip() # 去除字符串两边的空格 # 当用户输入有值时
if username and password:
# 判断
if username == user and password == pwd:
print('Login successfully!')
break
else:
print('Login failed!')
print('You have %s chance.'%(3 - count)) # 当用户输入None时
else:
print('You enter blank, please re-enter!')
continue # 当用户输入None时,跳出本次循环。 count += 1 # 每次循环都次数都进行加1操作

步骤四:扩展三次登陆

要求:将登陆三次失败后的用户进行锁定。

思路:1、先手动创建一个黑名单文件。

   2、再创建一个空列表,将每次输入错误的用户名添加至列表中。

   3、当加入列表中的用户名出现3次相同的用户名时,把这个用户名添加至黑名单进行锁定。

user = 'knight'
pwd = 'dk123'
count = 1
times = [] # 用于统计密码输错时的用户名的个数 with open('blacklist.txt', 'r', encoding='utf-8') as f_black:
black_line = f_black.readlines() # 将黑名单内容以列表的形式读出来
# print(black_line) while True: # 当登陆次数超过3次时提示登陆次数过多,退出程序
if count == 4:
print('Too many times!')
break username = input('Please enter your username:').strip()
password = input('Please enter your password:').strip() # 判断用户名是否为空
if not username:
print('The username you entered is blank, please re-enter')
continue # 判断密码是否为空
elif not password:
print('The password you entered is blank, please re-enter')
continue # 判断用户名再加上"\n"是否在黑名单的列表里,如果在则提示用户已锁定再退出程序
if username + '\n' in black_line:
print('Sorry, your account has been locked!')
break # 判断用户名和密码是否匹配
if username == user and password == pwd:
print('Login successfully!')
break
else:
print('The username or password you entered is incorrect,Please try again!')
print('You still have %s chances' % (3 - count)) # 如果不匹配则提示用户名或密码错误并告之用户还有几次机会 times.append(username) # 将错误的用户名加入至事先定义的times列表中,
if times.count(username) == 3: # 然后计算加入的用户名的个数是否等于三个,如果是则写入至黑名单文件中。
with open('blacklist.txt', 'a', encoding='utf-8')as f:
f.write(username+'\n')
count += 1

  

Python三次登陆的更多相关文章

  1. python小练习:用户三次登陆, 购物车

    2018.12.1 周末练习: 1.用户三次登陆 from random import randint i = 1 while i < 4: num = 0 verify_code = '' w ...

  2. 【小白学爬虫连载(10)】–如何用Python实现模拟登陆网站

    Python如何实现模拟登陆爬取Python实现模拟登陆的方式简单来说有三种:一.采用post请求提交表单的方式实现.二.利用浏览器登陆网站记录登陆成功后的cookies,采用get的请求方式,传入c ...

  3. python实现用户登陆(sqlite数据库存储用户信息)

    python实现用户登陆(sqlite数据库存储用户信息) 目录 创建数据库 数据库管理 简单登陆 有些地方还未完善. 创建数据库 import sqlite3 #建一个数据库 def create_ ...

  4. python通过SSH登陆linux并操作

    使用python通过SSH登陆linux并操作 用的昨天刚接触到的库,在windows下通过paramiko来登录linux系统并执行了几个命令,基本算是初试成功,后面会接着学习的. 代码: > ...

  5. Python实现模拟登陆

    大家经常会用Python进行数据挖掘的说,但是有些网站是需要登陆才能看到内容的,那怎么用Python实现模拟登陆呢?其实网路上关于这方面的描述很多,不过前些日子遇到了一个需要cookie才能登陆的网站 ...

  6. asp:第三平台登陆

    第三平台登陆接口申请网址: http://open.51094.com/ 文档: 第三方合作登录平台使用说明 为方便更多的开发朋友,本人特将当前市面上所有支持第三方联合登录的接口集为一体,以前需要多次 ...

  7. python使用post登陆电子科大信息门户并保存登陆后页面

    python使用post登陆电子科大信息门户并保存登陆后页面 作者:vpoet mail:vpoet_sir@163.com #coding=utf-8 import HTMLParser impor ...

  8. 【转】python 三种遍历list的方法

    [转]python 三种遍历list的方法 #!/usr/bin/env python # -*- coding: utf-8 -*- if __name__ == '__main__': list ...

  9. python爬虫模拟登陆

    python爬虫模拟登陆 学习了:https://www.cnblogs.com/chenxiaohan/p/7654667.html  用的这个 学习了:https://www.cnblogs.co ...

随机推荐

  1. BZOJ1509: [NOI2003]逃学的小孩 (树形DP)

    题意:给一棵树 选三个点A,B,C 求A到B的再从B到C的距离最大值 需要满足AB的距离小于AC的距离 题解:首先树上的最大距离就想到了直径 但是被样例误导了TAT BC两点构成了直径 我一开始以为A ...

  2. [Luogu] P1407 [国家集训队]稳定婚姻

    题目描述 我国的离婚率连续7年上升,今年的头两季,平均每天有近5000对夫妇离婚,大城市的离婚率上升最快,有研究婚姻问题的专家认为,是与简化离婚手续有关. 25岁的姗姗和男友谈恋爱半年就结婚,结婚不到 ...

  3. centos7进入救援模式,修复错误配置

    因某些修改操作,导致系统重启后无法正常启动,此时可进入救援模式,修复错误配置即可. OS:centos 7 1.重启系统后,进入grup引导页面,选中第一项然后按“e” 进入编辑模式: 2.通过↓键找 ...

  4. Hadoop Mapreduce 中的Partitioner

    Partitioner的作用的对Mapper产生的中间结果进行分片,以便将同一分组的数据交给同一个Reduce处理,Partitioner直接影响Reduce阶段的负载均衡. MapReduce提供了 ...

  5. python list排序(正倒)以及获取重复数据

    mylist = [2,2,2,2,5,5,7,2,2,3,3,3,3] #<class 'list'>: [2, 2, 2, 2, 5, 5, 7, 2, 2, 3, 3, 3, 3] ...

  6. ebay 店铺状态

    OrderStatusCodeType @XmlEnumValue("Active") @XmlEnumValue("Inactive") @XmlEnumVa ...

  7. Maven学习总结(32)——Maven项目部署到Tomcat8中

    1.环境准备 Maven.Tomcat8.Eclipse 2.maven中的镜像配置 大家知道,mavne默认使用的是国外的镜像,但是速度很慢,这里建议大家使用阿里的中央仓库镜像. 阿里出品,必出精品 ...

  8. ViewService

    ViewService 在分布式系统中,最常见的场景就是主备架构.但是如果主机不幸宕机,如何正确的通知客户端当前后端服务器的状况成为一个值得研究的问题.本文描述了一种简单的模型用于解决此问题. 背景 ...

  9. leetcode 19.删除链表的第n个节点

    删除链表的第n个节点 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第 ...

  10. 实验吧-catalyst-system

    刚学逆向很多都不懂,本题也是在看了 http://countersite.org/articles/reverse_engineering/136-revers-s-alexctf-2017.html ...