Python 文件读写,条件循环(三次登录锁定账号实例)
2016-10-17 14:27
465 查看
通过文件读写,条件循环相关语法,实现三次登录失败则锁定该账号的功能
需求一
""" 需求描述: 1.输入正确账号,密码,退出程序 2.登录失败,重新输入账号密码 3.同一账号连续登录失败超过三次,则锁定该账号 4.登录已锁定账号,提示账号已锁定 """
流程图一
实例代码一
#!/usr/bin/python #coding=utf-8 """ 需求描述: 1.输入正确账号,密码,退出程序 2.登录失败,重新输入账号密码 3.同一账号连续登录失败超过三次,则锁定该账号 4.登录已锁定账号,提示账号已锁定 user.txt: Milton Loveyp 0 Cherish Loveypgfc 0 yangp Loveypgfc 0 """ def modify_user(name, mode="add"): """ 修改用户名单中的登录错误次数 :param name: 用户名称 :param mode:add,登录错误次数自增1;del,登录错误次数重置为0 :return: """ # 读取用户文件 with open("user.txt", "r") as read_file: read_data = read_file.readlines() # 写入用户文件 with open("user.txt", "w") as write_file: for line in read_data: new_line = line.split() if new_line[0] == name: if mode == "add": new_line[2] = bytes(int(new_line[2]) + 1) else: new_line[2] = "0" new_line = " ".join(new_line) + "\n" write_file.write(new_line) write_file.flush() else: write_file.write(line) def auth(name, passwd): """ 用户鉴权 :param name: 登录用户名 :param passwd: 登录密码 :return: """ with open("user.txt", "r") as read_file: for eachLine in read_file: user_name, password, errors = eachLine.split() if name == user_name: if int(errors) < 3: if password == passwd: print "Dear [%s],welcome~" % name modify_user(name, "del") return True else: print "auth fail,please check your account and password!" modify_user(name, "add") return False else: print "your accout is locked!" return False else: print "your account is not exist!" return False def login(): """ 登录 :return: """ while True: name = raw_input("Name:") passwd = raw_input("PASS:") if auth(name, passwd): break if __name__ == '__main__': login()
需求二,在一的基础上添加锁定时间控制。
""" 需求点: 1.用户输入账号与密码 2.如果输入正确,则提示欢迎信息 3.如果输入账号不存在,则提示账号不存在 4.如果输入账号与密码不匹配,提示验证失败 5.同一账号,如果连续输入三次错误密码,则锁定该账号2min,2min后重新输入,如果账号密码匹配,则登录成功 6.如果三次登录内成功登录,则清空登录错误次数 7.登录时,如果账号已被锁定,提示账号已锁定信息 """
流程图二
实例代码二
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 需求点: 1.用户输入账号与密码 2.如果输入正确,则提示欢迎信息 3.如果输入账号不存在,则提示账号不存在 4.如果输入账号与密码不匹配,提示验证失败 5.同一账号,如果连续输入三次错误密码,则锁定该账号2min,2min后重新输入,如果账号密码匹配,则登录成功 6.如果三次登录内成功登录,则清空登录错误次数 7.登录时,如果账号已被锁定,提示账号已锁定信息 user.txt: Milton Loveyp 0 Cherish Loveypgfc 0 yangp Loveypgfc 0 """ import time def modify_user(name, mode="add"): """ 修改用户名单中的登录错误次数 :param name: 用户名称 :param mode:add,登录错误次数自增1;del,登录错误次数重置为0 :return: """ # 读取用户文件 with open("user.txt", "r") as read_file: read_data = read_file.readlines() # 写入用户文件 with open("user.txt", "w") as write_file: for line in read_data: new_line = line.split() if new_line[0] == name: if mode == "add": new_line[2] = bytes(int(new_line[2]) + 1) if len(new_line) < 4: new_line.append(str(time.time())) else: new_line[3] = str(time.time()) else: new_line[2] = "0" new_line = new_line[0:3] new_line = " ".join(new_line) + "\n" write_file.write(new_line) write_file.flush() else: write_file.write(line) def auth(name, passwd, lock_time): """ 用户鉴权 :param name: 登录用户名 :param passwd: 登录密码 :return: """ with open("user.txt", "r") as read_file: for eachLine in read_file: user_list = eachLine.split() if len(user_list) < 4: user_list.append(str(time.time() - 100000)) user_name, password, errors, last_time = user_list if name == user_name: if password == passwd: if time.time() - float(last_time) > lock_time or int(errors) < 3: print "Dear [%s],welcome~" % name modify_user(name, "del") return True else: print "your accout is locked,please try after [%f]s !" % ( lock_time - (time.time() - float(last_time))) return False else: if int(errors) < 3: print "auth fail,please check your account and password!" modify_user(name, "add") return False elif time.time() - float(last_time) > lock_time: print "auth fail,please check your account and password!" modify_user(name, "del") modify_user(name, "add") return False else: print "your accout is locked,please try after [%f]s !" % ( lock_time - (time.time() - float(last_time))) return False else: print "your account is not exist!" return False def login(): """ 登录 :return: """ while True: user_name = raw_input("Name:") pwd = raw_input("PASS:") if auth(user_name, pwd, 120): break if __name__ == '__main__': login()
相关文章推荐
- Python 模拟三次用户登录,登录失败锁定账号并写入文件
- python3.0 模拟用户登录,三次错误锁定的实例
- Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作
- Python 文件读写操作实例详解
- Python3练习-输入用户名输入三次错误即锁定该用户,提示登录失败
- 【python coding 2:文件读写】读取本地文件里的ip地址,循环写入到新的文件中
- Python 读写一个配置文件的实例分解 (二)
- Python3基础之条件与循环控制实例解析
- Python 文件读写操作实例详解
- python 递归遍历文件夹,并打印满足条件的文件路径实例
- Python 文件读写操作实例详解
- python 学习笔记day05-python字典和集合、条件和循环、文件和输入输出
- Python 文件读写操作实例详解
- python文件读写实例,超级方便
- python3.0 模拟用户登录,三次错误锁定
- Python 文件读写操作实例详解
- Python 文件读写操作实例详解
- python逐行读写txt文件的实例讲解
- Python 文件读写操作实例详解
- Python 文件读写操作实例详解