基本需求:
- 输入账号密码完成验证,验证通过后输出"登录成功"
- 可以登录不同的用户
- 同一账号输错三次锁定(附加功能,在程序一直运行的情况下,一旦锁定,则锁定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)