# -*- coding:utf-8 -*-
# author:倪周强
import os
users = [['user1', '123'], ['user2', '456'], ['user3', '789']]
auth_file = os.path.exists('auth_status')
if not auth_file:
# 如果不存在,那说明是第一次运行程序,就新建一个文件,写上1,表示可以进行验证过程。
# 写完1,回到首部去读取这个状态值赋给auth_value变量,以便后续判断是否锁定。
f = open('auth_status', 'w+', encoding='utf-8')
f.write('1')
f.seek(0)
auth_value = f.read()
f.close()
else:
# 如果存在,说明不是第一次运行程序,那就读取文件,把值赋给auth_value变量。
f = open('auth_status', 'r+', encoding='utf-8')
auth_value = f.read()
f.close()
if int(auth_value) == 1:
# 如果是1,表示可以验证,没有锁定,继续下面的验证过程。
count = 0
# 这里的count,我理解为验证失败的次数,而不是验证的次数。
while count < 3:
# 如果验证失败>=3次,就不会进入循环了。
user_name = input('请输入用户名:')
user_password = input('请输入密码:')
for user in users: # 从列表里取用户信息
if user_name == user[0] and user_password == user[1]: # 判断用户名和密码是否同时正确
print('恭喜你,验证成功!') # 打印消息
auth_flag = True # 给一个标志,表示验证成功,用于跳出while的外层循环。
break # 跳出for循环
else:
auth_flag = False # 给一个标志,表示验证失败,这行必须有,要不然下一个if会因为没有定义而报错。
if auth_flag: # 某次验证成功了,就跳出while循环。
break
count += 1 # 否则说明验证失败,失败次数+1
if count <= 2: # 前两次失败会提醒,第三次就不提醒了
print('你已经错误了%s次,还有%s次机会(错误3次,账户将被锁定)!' % (count, 3 - count))
print('-----------------------------------------------------------------------')
else: # 说明while循环是完整结束的,试了三次都失败了,那么把0保存到文件里,说明账户被锁定。
f = open('auth_status', 'w+', encoding='utf-8')
f.write('0')
f.close()
print("你已经错误了3次,账户被锁定,再见!") # 区别前两次有提醒,第三次直接再见
else: # 如果不是1,说明状态被锁定,就不再验证,直接打印消息。
print("你已经被锁定,不能登录。")
wechat: nick753159 qq: 417966852 email: nzq42@qq.com base: shanghai