Python输入账号密码完成登录

题目:

基本需求:

  1. 输入账号密码完成验证,验证通过后输出"登录成功"
  2. 可以登录不同的用户
  3. 同一账号输错三次锁定(附加功能,在程序一直运行的情况下,一旦锁定,则锁定5分钟后自动解锁)
    扩展需求:
    在3的基础上,完成用户一旦锁定,无论程序是否关闭,都锁定5分钟

导入程序需要的包:

import time
from datetime import datetime
import os

创建日志文件,该用来记录解锁时间

def create(file):
	print("{}创建日志".format(" " * 50))
	if not os.path.exists(file):
		f = open(file, 'w')
		f.close()
		write(f_name, 0)

将解锁时间写入日志文件中

def write(file, time_min):
	print("{}正在向日志中写入解锁时间".format(" " * 50))
	unlocking_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time() + time_min * 60))
	with open(file, 'w') as f:  # 设置文件对象
		f.write(unlocking_time)
	return str(unlocking_time)

从日志文件中读取解锁时间

def read(file):
	print("{}正在从日志读解锁时间".format(" " * 50))
	with open(file, 'r') as f:  # 打开文件
		lines = f.readlines()  # 读取所有行
		last_line = lines[-1]  # 取最后一行
		unlocking_time = datetime.strptime(last_line, '%Y-%m-%d %H:%M:%S')
		return unlocking_time

主函数:初始化

print('{: >20}{: >28}'.format('用户', '系统'))
user = {'admin': '123'}  # 账号密码
f_name = 'log.txt'  # 文件名
create(f_name)  # 如果没有该文件,则新建.txt文件
second = 3  # 解锁次数
time_delay = 5  # 延时时间(min)
flag_print = True  # 使程序关闭重启后能print出 → 请在 {时间} 后,重新登录!
flag_program = True  # 控制程序运行,如果登录成功改变标志位!
print("{: >50}".format('初始化完成'))

主函数:

while flag_program:
	unlock_time = read(f_name)
	while unlock_time > datetime.now():
		time.sleep(1)  # 作用:降低程序对CPU的占用率,不加电脑风扇会嗡嗡嗡的叫
		while flag_print:
			print('请在 {} 后,重新登录!'.format(unlock_time))  # 程序二次打开能显示改代码
			flag_print = False
	flag_print = True
	for i in range(0, second):
		username = input("用户名:")
		password = input("密码:")
		if username in user.keys() and user[username] == password:
			print("登录成功!")
			flag_program = False
			break
		elif i < second - 1:
			print('登录失败,还剩{}次机会'.format(second - 1 - i))
		else:
			print('登录失败,还剩0次机会,锁定{}分钟!'.format(time_delay))
			write(f_name, time_delay)
发布了24 篇原创文章 · 获赞 2 · 访问量 415

猜你喜欢

转载自blog.csdn.net/weixin_46491071/article/details/104701505