1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # Author:Caesar yang 4 5 import getpass #导入模块隐藏密码 6 count = 0 #定义计数器 7 while count < 3: 8 name = input('username:') #输入用户名 9 with open('lock_file.txt','r+') as lock_list: #读取用户名锁定文件 10 for lock_line in lock_list: #循环文件内容 11 lock_line = lock_line.strip('\n') #去掉回车 12 if name == lock_line: #将用户名与文件内容比较,如果相同, 13 exit('用户%s已锁定,自动退出程序'%name) #退出程序,如果不同,往下执行 14 with open('username.txt') as user_list: #读取用户名文件 15 for user_line in user_list: #循环文件内容 16 (username,password) = user_line.strip('\n').split() #由于用户名与密码在一块,需要将用户名与密码拆分开分别进行比较 17 if name == username: #如果用户名相同,往下执行 18 j = 0 #定义一个新的计数器 19 while j < 3: 20 passwd = getpass.getpass('请输入密码:') #输入密码 21 if passwd == password: #如果密码正确 22 print('欢迎用户%s登陆!'%name) #打印标语 23 exit() #正常结束 24 else: #如果密码错误 25 if j != 2: #这里因为j=2以后就直接结束程序了所以直接跳过0次机会 26 print('密码输入错误!请重新输入!你还有%s次机会:'%(2-j)) 27 j += 1 #j+1以后继续while循环 28 else: #j=3时 29 lock_list.write(name + '\n' ) #将用户名写入锁定文件 30 exit('用户%s达到最大错误次数,已锁定账号!'%name) 31 else: #如果用户名不同往下执行 32 pass #跳过此循环 33 else: #用户名不同往下执行 34 if count != 2: #同样的道理,循环到第三次如果依旧错误将直接异常结束程序 35 print('用户%s不存在,请重新输入,还有%s次机会:'%(name,2-count)) 36 count += 1 #count+1以后继续for循环 37 else: #异常结束 38 exit('用户%s不存在,自动退出程序!'%name)