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)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿过家家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值