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方法

时间: 2024-10-05 02:52:20

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

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

最近跟同学学习爬虫的时候看到网上有个帖子,好像是山大校园网不稳定,用py做了个模拟登陆很有趣,于是我走上了一条不归路..... 先上一张校园网截图 首先弄清一下模拟登陆的原理: 1:服务器判定浏览器登录使用浏览器标识,需要模拟登陆 2: 需要post账号,密码,以及学校id python走起,我用的2.7版本,用notepad++写的,绑定python可以直接运行 由于是模拟网页登陆,需要导入urllib urllib2 cookielib库,前两个有与网页直接的接口,cookielib就是用来

作业---模拟登陆

# 模拟登陆:# 1. 用户输入帐号密码进行登陆# 2. 用户信息保存在文件内# 3. 用户密码输入错误三次后锁定用户 user.txt文件内容: {"alex":"zs123","zs":"zs123","ls":"zs123"} lock.txt文件内容: 为空 代码如下: f = open("user.txt","r",encoding=&q

python requests模拟登陆github

1. Cookie 介绍 HTTP 协议是无状态的.因此,若不借助其他手段,远程的服务器就无法知道以前和客户端做了哪些通信.Cookie 就是「其他手段」之一. Cookie 一个典型的应用场景,就是用于记录用户在网站上的登录状态. 用户登录成功后,服务器下发一个(通常是加密了的)Cookie 文件. 客户端(通常是网页浏览器)将收到的 Cookie 文件保存起来. 下次客户端与服务器连接时,将 Cookie 文件发送给服务器,由服务器校验其含义,恢复登录状态(从而避免再次登录). 2. req

python requests模拟登陆正方教务管理系统,并爬取成绩

最近模拟带账号登陆,查看了一些他人的博客,发现正方教务已经更新了,所以只能自己探索了. 登陆: 通过抓包,发现需要提交的值 需要值lt,这是个啥,其实他在访问登陆页面时就产生了 session=requests.Session() response = session.get(login_url, headers=header) cookies = response.cookies for c in cookies: cookie = c.name + '=' + c.value print('

mooc python网络信息获取第一周

一.环境 IDLE,Subline Text,PyCharm,Anaconda & Spyder. 二.requests库 1.安装 cmd:pip install requests 2.七方法 requests.request(method, url , **kwarge) 构造请求支撑以下各种方法的基础方法,method :get post head put  patch delete options: requests.get(url,params=None,**kwargs) 获取HTM

使用python - selenium模拟登陆b站

思路 输入用户名密码点击登陆 获取验证码的原始图片与有缺口的图片 找出两张图片的缺口起始处 拖动碎片 功能代码段 # 使用到的库 from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_condit

第二阶段---python基础--模拟登陆

说明: 1.用户原文件存储在文件中_userinfo 2.判断是否存在登陆错误的用户_被锁定的用户_wrong_name2,没有创建,并写入用户文件头username,带逗号,锁定用户以'逗号'隔开; 3.判断输入用户是否存在锁定账户中(取出用户名,存入列表,) 4.逻辑控制,用户名,或秘密超过3次记录该用户的用户名到文件; import osif os.path.exists('wrong_name2'):    file_wrong=open('wrong_name2')    f=file

python selenium 模拟登陆百度账号

代码: from selenium import webdriver url = 'https://passport.baidu.com/v2/?login' username = 'your_username' passwd = "your_password" driver = webdriver.Chrome() # 打开chrome浏览器 driver.get(url) # 打开指定的网页 input_username = driver.find_element_by_id(&q

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

一:Python是一种什么样的语言? 1.语言的分类: a.编译型语言和解释性语言: 通常所说的计算机语言分为编译型和解释型语言.编译型语言典型的如C,C++,通常在程序执行之前必须经由编译器编译成机器可识别的可执行文件.而解释型语言则不用预先编译,在程序执行过程中由解释器逐行解释成二进制代码供计算机执行.典型的如JAVA,JAVASCRIPT,VBSCRIPT,PYTHON等通常编译型语言因预先进行了编译,所以执行效率较高,而解释型语言效率稍慢. b.静态语言和动态语言: 静态语言和动态语言一

python学习笔记(第一周):变量

在python中申明一个变量,不需要申明变量的类型,如下: name = "Eraser Li" 打印变量,代码如下: print("My name is",name) 控制台输出结果: My name is Eraser Li 变量赋值给变量: name2 = name print("My name is",name2) 控制台输出结果: My name is Eraser Li 现在给name重新赋值: name = "Eraser