作业要求:
-
输入用户名密码
-
认证成功后显示欢饮信息
-
输入错误三次后锁定
1
|
<br><br><br> |
# -*- 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()