模拟登陆作业需求:

1. 用户输入帐号密码进行登陆

2. 用户信息保存在文件内

3. 用户密码输入错误三次后锁定用户

额外实现功能:

1.提示输入错误次数

2.输入已锁定用户会提示

3.用户不存在会提示

正确用户信息文件中以字典形式保存用户名密码:

{'name': 'password','cx':'123','even':'456','test':'ok'}

锁定用户信息文件中以列表形式保存锁定用户名:

['name']

流程图:

详细代码:(python3.6)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: Even count = 0 # 为了记录需求中3次输入错误避免的次数,计数项赋初始值
load = True # 为了完成功能后退出,赋初始值
file = open("正确用户信息文件",'r',encoding='utf-8') # 打开正确用户信息文档,获取正确的用户名密码
file_wrong = open("锁定用户信息文件",'r+',encoding='utf-8') # 打开已锁定的用户信息文档,获取锁定的用户名密码
line = eval(file.readline()) # 将正确信息中的字符串转换成字典(原字符串为字典格式)
line_wrong = eval(file_wrong.readline()) # 将正确信息中的字符串转换成列表(原字符串为列表格式) def out(): # 将重复代码定义,功能是帮助跳出while循环并关闭已打开文档
global load # 声明全局变量
load = False # 赋值load,为了跳出while循环
file_wrong.close() # 关闭正确用户信息文档
file.close() # 关闭锁定用户信息文档 while load: # 判断是否已完成功能
name = input("请输入用户名:") # 输入用户名
password = input("请输入密码:") # 输入密码
if name in line and name not in line_wrong: # 判断用户名是否正确,和是否已被锁定
while count <= 3: # 判断是否已循环3次
if password == line[name]: # 判断用户名是否对应正确的密码
print("您已成功登陆") # 输出成功登陆信息
out() # 调用自定义out方法
break # 跳出本次循环
else: # 说明未输入正确的密码
count +=1 # 计数项自加一
msg_count = '''第%s次密码输入错误\n'''%(count) # 提示输入错误次数
print(msg_count) # 打印错误次数信息
if count < 3: # 小于三次错误输入,可以重新输入
password = input("密码错误,请重新输入密码:") # 重新输入密码
elif count == 3: # 判断是否已输错三次
print("已输错3次,账号已锁定") # 打印锁定提示信息
line_wrong.append(name) # 将已锁定信息加入锁定元组中
file_wrong.seek(0) # 输入指针移到开头,如果不移动会产生多个元组
file_wrong.write(str(line_wrong)) # 写入锁定信息
file_wrong.tell() # 获取当前的输入指针位置,如果不获取会产生多个元组
out() # 调用out方法
break
elif name in line_wrong: # 判断用户名是否在已锁定用户名中
print("该用户名已被锁定") # 打印已锁定通知信息
out() # 调用自定义out方法
break # 跳出当前循环
else: # 说明用户名不在正确用户名信息中
print("该用户名不存在") # 打印用户名输入错误信息
out() # 调用out方法

python作业:模拟登陆(第一周)的更多相关文章

  1. Python作业模拟登陆(第一周)

    模拟登陆:1. 用户输入帐号密码进行登陆2. 用户信息保存在文件内3. 用户密码输入错误三次后锁定用户 思路: 1. 用户名密码文件为passwd,锁定用户文件为lock 2. 用户输入账号密码采用i ...

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

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

  3. Python实现模拟登陆

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

  4. python爬虫模拟登陆

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

  5. 软工作业-----Alpha版本第一周小结

            软工作业-----Alpha版本第一周小结   Part1.第一周周计划记录 姓名 学号 周前计划安排 每周工作记录 自我打分 yrz(队长) 1417 1.进行任务分析 2.任务分配 ...

  6. Python学习之旅--第一周--初识Python

    一:Python是一种什么样的语言? 1.语言的分类: a.编译型语言和解释性语言: 通常所说的计算机语言分为编译型和解释型语言.编译型语言典型的如C,C++,通常在程序执行之前必须经由编译器编译成机 ...

  7. python+requests模拟登陆 学校选课系统

    最近学校让我们选课,每天都有不同的课需要选....然后突发奇想试试用python爬学校选课系统的课程信息 先把自己的浏览器缓存清空,然后在登陆界面按f12 如图: 可以看到登陆时候是需要验证码的,验证 ...

  8. Python脚本模拟登陆DVWA

    目录 requests模拟登陆 Selenium自动化测试登陆 环境:python3.7 windows requests模拟登陆 我们登陆DVWA的时候,看似只有一步:访问网站,输入用户名和密码,登 ...

  9. Python 爬虫模拟登陆知乎

    在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...

  10. python爬虫 模拟登陆校园网-初级

    最近跟同学学习爬虫的时候看到网上有个帖子,好像是山大校园网不稳定,用py做了个模拟登陆很有趣,于是我走上了一条不归路..... 先上一张校园网截图 首先弄清一下模拟登陆的原理: 1:服务器判定浏览器登 ...

随机推荐

  1. BCB::TClientSocket,TServerSocket控件

    一,首先服务端开启监听 ServerSocket1->Port=StrToInt(5000); ServerSocket1->Active=true; ServerSocket1控件,响应 ...

  2. 第51章 设置FLASH的读写保护及解除—零死角玩转STM32-F429系列

    第51章     设置FLASH的读写保护及解除 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...

  3. C# continue语句

    一.C# continue语句 continue语句在循环体中结束本次循环,而重新开始下一次循环. 语法格式如下: continue;二.示例   using System;using System. ...

  4. 3、SpringBoot+MybatisPlus整合-------代码生成器

    <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</art ...

  5. Chrome 调试工具的一些高阶功能

    Chrome 内置抓包工具 Block requests 截取长图 代码的覆盖率分析 Make site better Chrome 内置抓包工具 在浏览器地址栏输入chrome://net-inte ...

  6. 关于discuz 不能全文搜索的问题

    这个问题客服反馈很多次了,以为discuz 默认搜索只能搜标题,除非配置了sphinx全文搜索引擎. 但是之前比较老的员工说以前能用的,也就是discuz老版本. 今天突然想到是不是discuz纵横搜 ...

  7. 【例题收藏】◇例题·II◇ Berland and the Shortest Paths

    ◇例题·II◇ Berland and the Shortest Paths 题目来源:Codeforce 1005F +传送门+ ◆ 简单题意 给定一个n个点.m条边的无向图.保证图是连通的,且m≥ ...

  8. lintcode_93_平衡二叉树

    平衡二叉树   描述 笔记 数据 评测 给定一个二叉树,确定它是高度平衡的.对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1. 您在真实的面试中是否遇到过 ...

  9. pip安装第三方包总失败

    第一步:升级pip python -m pip install -U pip 第二布:安装想下载的第三方包 python -m pip install xx 一般来说pip安装不会失败的,失败的话就尝 ...

  10. Linux用户与组管理命令

    1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可. who | cut -d" " -f1 | sort -u 或 who | cut -d ...