python作业:模拟登陆(第一周)
模拟登陆作业需求:
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作业:模拟登陆(第一周)的更多相关文章
- Python作业模拟登陆(第一周)
模拟登陆:1. 用户输入帐号密码进行登陆2. 用户信息保存在文件内3. 用户密码输入错误三次后锁定用户 思路: 1. 用户名密码文件为passwd,锁定用户文件为lock 2. 用户输入账号密码采用i ...
- 【小白学爬虫连载(10)】–如何用Python实现模拟登陆网站
Python如何实现模拟登陆爬取Python实现模拟登陆的方式简单来说有三种:一.采用post请求提交表单的方式实现.二.利用浏览器登陆网站记录登陆成功后的cookies,采用get的请求方式,传入c ...
- Python实现模拟登陆
大家经常会用Python进行数据挖掘的说,但是有些网站是需要登陆才能看到内容的,那怎么用Python实现模拟登陆呢?其实网路上关于这方面的描述很多,不过前些日子遇到了一个需要cookie才能登陆的网站 ...
- python爬虫模拟登陆
python爬虫模拟登陆 学习了:https://www.cnblogs.com/chenxiaohan/p/7654667.html 用的这个 学习了:https://www.cnblogs.co ...
- 软工作业-----Alpha版本第一周小结
软工作业-----Alpha版本第一周小结 Part1.第一周周计划记录 姓名 学号 周前计划安排 每周工作记录 自我打分 yrz(队长) 1417 1.进行任务分析 2.任务分配 ...
- Python学习之旅--第一周--初识Python
一:Python是一种什么样的语言? 1.语言的分类: a.编译型语言和解释性语言: 通常所说的计算机语言分为编译型和解释型语言.编译型语言典型的如C,C++,通常在程序执行之前必须经由编译器编译成机 ...
- python+requests模拟登陆 学校选课系统
最近学校让我们选课,每天都有不同的课需要选....然后突发奇想试试用python爬学校选课系统的课程信息 先把自己的浏览器缓存清空,然后在登陆界面按f12 如图: 可以看到登陆时候是需要验证码的,验证 ...
- Python脚本模拟登陆DVWA
目录 requests模拟登陆 Selenium自动化测试登陆 环境:python3.7 windows requests模拟登陆 我们登陆DVWA的时候,看似只有一步:访问网站,输入用户名和密码,登 ...
- Python 爬虫模拟登陆知乎
在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...
- python爬虫 模拟登陆校园网-初级
最近跟同学学习爬虫的时候看到网上有个帖子,好像是山大校园网不稳定,用py做了个模拟登陆很有趣,于是我走上了一条不归路..... 先上一张校园网截图 首先弄清一下模拟登陆的原理: 1:服务器判定浏览器登 ...
随机推荐
- 近期流行的JavaScript框架与主题
[新年快乐]2017年你应该关注的JavaScript框架与主题 2017-01-01 王下邀月熊 JavaScript JavaScript的繁荣促生了很多优秀的技术.框架与工具库,这空前的繁荣也给 ...
- 第46章 DCMI—OV5640摄像头—零死角玩转STM32-F429系列
第46章 DCMI—OV5640摄像头 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com ...
- shell编程中的vim命令说明
vim命令模式: 1.一般命令模式 2.编辑模式 3.底行命令行命令模式 一般命令模式 直接用字符操作编辑模式 可以写文档(跟txt有点像)底行命令模式 先按'ESC',在按下“:”,之后在输出命令 ...
- 第35题:LeetCode138. Copy List with Random Pointer
题目 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点. 要求返回这个链表的深度拷贝. 考点 思路 代码 /** * Definition for singly ...
- Python简单线程间通信
本节主要举一个简单的线程间通信的例子,利用线程安全的数据结构queue.Queue保存线程间通信的内容, import queue from threading import Thread from ...
- Ubuntu16.04下配置ssh免密登录
Ubuntu16.04下配置ssh免密登录 环境准备:新建两台虚拟机,而且两台虚拟机上都装有Ubuntu16.04的系统,使两台虚拟机之间保持互通状态.分别为两台虚拟机命名为A,B.假设我们要使A虚拟 ...
- 《python编程从入门到实践》第七章笔记
用户输入和while循环 1.函数input():让程序停止运行,等待用户输入一些文本.接受一个参数,既即要向用户显示的提示或说明. 2.将数值输入用于计算和比较前,务必将其转换为数值表示. 3.fo ...
- Python全栈day 03
Python全栈day 03 一.运算符补充 in ,逻辑运算符,判断某字符或某字符串是否在一个大的字符串中,输出得到bool型数据. value = '我是中国人' v = '我' if v in ...
- python 学习心得
多用类或是函数 我以前写的时候,不用函数,从头写到尾,后来,要改成函数,也是要花很多测试的时间,改的话还得一个调试,如果一开始就用函数的话,就能节省很多时间. 函数的功能尽可能的小 比如说像我用try ...
- B1008 数组元素循环右移问题 (20分)
B1008 数组元素循环右移问题 (20分) 思路 1 2 3 4 5 6 5 6 1 2 3 4 6个数,循环右移2位. 也可以理解为 先翻转 6 5 4 3 2 1 然后再两部分,分别翻转 5 6 ...