模拟登陆作业需求:

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

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

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

额外实现功能:

1.提示输入错误次数

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

3.用户不存在会提示

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

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

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

  1. ['name']

流程图:

详细代码:(python3.6)

  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. # Author: Even
  4.  
  5. count = 0 # 为了记录需求中3次输入错误避免的次数,计数项赋初始值
  6. load = True # 为了完成功能后退出,赋初始值
  7. file = open("正确用户信息文件",'r',encoding='utf-8') # 打开正确用户信息文档,获取正确的用户名密码
  8. file_wrong = open("锁定用户信息文件",'r+',encoding='utf-8') # 打开已锁定的用户信息文档,获取锁定的用户名密码
  9. line = eval(file.readline()) # 将正确信息中的字符串转换成字典(原字符串为字典格式)
  10. line_wrong = eval(file_wrong.readline()) # 将正确信息中的字符串转换成列表(原字符串为列表格式)
  11.  
  12. def out(): # 将重复代码定义,功能是帮助跳出while循环并关闭已打开文档
  13. global load # 声明全局变量
  14. load = False # 赋值load,为了跳出while循环
  15. file_wrong.close() # 关闭正确用户信息文档
  16. file.close() # 关闭锁定用户信息文档
  17.  
  18. while load: # 判断是否已完成功能
  19. name = input("请输入用户名:") # 输入用户名
  20. password = input("请输入密码:") # 输入密码
  21. if name in line and name not in line_wrong: # 判断用户名是否正确,和是否已被锁定
  22. while count <= 3: # 判断是否已循环3次
  23. if password == line[name]: # 判断用户名是否对应正确的密码
  24. print("您已成功登陆") # 输出成功登陆信息
  25. out() # 调用自定义out方法
  26. break # 跳出本次循环
  27. else: # 说明未输入正确的密码
  28. count +=1 # 计数项自加一
  29. msg_count = '''第%s次密码输入错误\n'''%(count) # 提示输入错误次数
  30. print(msg_count) # 打印错误次数信息
  31. if count < 3: # 小于三次错误输入,可以重新输入
  32. password = input("密码错误,请重新输入密码:") # 重新输入密码
  33. elif count == 3: # 判断是否已输错三次
  34. print("已输错3次,账号已锁定") # 打印锁定提示信息
  35. line_wrong.append(name) # 将已锁定信息加入锁定元组中
  36. file_wrong.seek(0) # 输入指针移到开头,如果不移动会产生多个元组
  37. file_wrong.write(str(line_wrong)) # 写入锁定信息
  38. file_wrong.tell() # 获取当前的输入指针位置,如果不获取会产生多个元组
  39. out() # 调用out方法
  40. break
  41. elif name in line_wrong: # 判断用户名是否在已锁定用户名中
  42. print("该用户名已被锁定") # 打印已锁定通知信息
  43. out() # 调用自定义out方法
  44. break # 跳出当前循环
  45. else: # 说明用户名不在正确用户名信息中
  46. print("该用户名不存在") # 打印用户名输入错误信息
  47. 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. 近期流行的JavaScript框架与主题

    [新年快乐]2017年你应该关注的JavaScript框架与主题 2017-01-01 王下邀月熊 JavaScript JavaScript的繁荣促生了很多优秀的技术.框架与工具库,这空前的繁荣也给 ...

  2. 第46章 DCMI—OV5640摄像头—零死角玩转STM32-F429系列

    第46章     DCMI—OV5640摄像头 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com ...

  3. shell编程中的vim命令说明

    vim命令模式:  1.一般命令模式 2.编辑模式 3.底行命令行命令模式 一般命令模式 直接用字符操作编辑模式 可以写文档(跟txt有点像)底行命令模式 先按'ESC',在按下“:”,之后在输出命令 ...

  4. 第35题:LeetCode138. Copy List with Random Pointer

    题目 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点. 要求返回这个链表的深度拷贝. 考点 思路 代码 /** * Definition for singly ...

  5. Python简单线程间通信

    本节主要举一个简单的线程间通信的例子,利用线程安全的数据结构queue.Queue保存线程间通信的内容, import queue from threading import Thread from ...

  6. Ubuntu16.04下配置ssh免密登录

    Ubuntu16.04下配置ssh免密登录 环境准备:新建两台虚拟机,而且两台虚拟机上都装有Ubuntu16.04的系统,使两台虚拟机之间保持互通状态.分别为两台虚拟机命名为A,B.假设我们要使A虚拟 ...

  7. 《python编程从入门到实践》第七章笔记

    用户输入和while循环 1.函数input():让程序停止运行,等待用户输入一些文本.接受一个参数,既即要向用户显示的提示或说明. 2.将数值输入用于计算和比较前,务必将其转换为数值表示. 3.fo ...

  8. Python全栈day 03

    Python全栈day 03 一.运算符补充 in ,逻辑运算符,判断某字符或某字符串是否在一个大的字符串中,输出得到bool型数据. value = '我是中国人' v = '我' if v in ...

  9. python 学习心得

    多用类或是函数 我以前写的时候,不用函数,从头写到尾,后来,要改成函数,也是要花很多测试的时间,改的话还得一个调试,如果一开始就用函数的话,就能节省很多时间. 函数的功能尽可能的小 比如说像我用try ...

  10. 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 ...