作业要求:

  1. 输入用户名密码

  2. 认证成功后显示欢饮信息

  3. 输入错误三次后锁定




# -*- coding: utf-8 -*-
# created by ChaiMeng
import sys

retry_limit = 3 #定义输错次数限制
retry_count = 0  #定义计数器初始值
account_file = 'account.txt'  #文件变量定义
account_lock = 'account_lock.txt'  #文件变量定义

while retry_count < retry_limit:   #定义循环条件,当计算器的值小于3时,一直循环
    file_obj_lock = open(account_lock,"r")  #已只读模式打开account_lock文件
    account = input("请输入用户名: ")   #提示用户输入用户名
    for username in file_obj_lock.readlines():  #使用readlines读取account_lock里的锁定账户
        if account == username.strip():   #判断如果输入账户在锁定账户内,则提示并推出
            print("你的账号在锁定列表")
            sys.exit(2)

    password = input("请输入你的密码: ")  #提示用户输入密码
    file_obj_account = open(account_file, "r")  #已只读方式打开account文件
    match_flag = False   #定义匹配标志位,根据匹配标志位判断用户名与密码是否输入正确
    for line in file_obj_account.readlines():  #使用readlines读取account里的账户及密码
        user,pwd = line.strip().split()
        #剥去行收尾的空格,然后再根据用户名及密码中间的空格进行用户名及密码的分离,并赋值给到user,pwd变量
        if account == user and password == pwd : #判断用户名和密码是否相等,若匹配则输出提示信息,并把匹配标志位置True
            print(account + ' 已成功匹配')
            match_flag = True
            break   #跳出本次的for循环体
    file_obj_account.close()  #关闭account文件
    file_obj_lock.close()  #关闭account_lock文件
    if match_flag == False:  #如果匹配标志位为False,则说明账号信息错误
        print("用户名或密码错误")
        retry_count += 1  #计数器加一
    else:
        print('欢迎登陆') #否则账号信息正确
        break  #用户登录成功,打断while循环
else:
    print('你的账号已被锁定!')
    f = open('account_lock.txt','a')
    f.write('\n' + account )  #对输错三次的用户账号进行锁定
    f.close()