1 import os # 導入python自帶庫的模塊 2 import sys # 導入python自帶庫的模塊 3 import getpass # 導入python自帶庫的模塊 4 lock_file = 'E:account_lock.txt' # 定義是否鎖定狀態的變量 5 user_file = 'E:account.txt' # 定義帳號密碼變量文件 6 u = 0 # 循環初始化 7 while u < 3: 8 name = input("請輸入用戶名:") # 用input 給name賦值 9 lock_file = open('E:account_lock.txt','r+') # 打開鎖定文件,權限是讀取更新 10 lock_list = lock_file.readlines() 11 for lock_line in lock_list: 12 lock_line = lock_line.strip('\n') # 使用.strip()的方法去點換行符 13 if name == lock_line: 14 print('用戶 %s 已經鎖定,請聯繫您的系統管理員' % name) 15 sys.exit(1) 16 user_file = open('E:account.txt','r') # 打開account文件,權限是讀取更新 17 user_list = user_file.readlines() # 使用.readlines的方法逐行讀取account文件 18 for user_line in user_list: # 使用for循環讀取account的內容 19 (user,passwd) = user_line.strip('\n').split() # 用戶名密碼輸入次數超過3次的用戶添加到account_lock文件中 20 if name == user: 21 j = 0 22 while j < 3: 23 password= getpass.getpass('請輸入密碼') 24 if password == passwd: 25 print('歡迎登陸管理平臺,用戶%s' %name) 26 sys.exit(0) 27 else: 28 if j != 2: 29 print('用戶%s密碼錯誤,請從新輸入,還有%d次機會'%(name,2 -j)) 30 j += 1 31 else: 32 lock_file.write(name + '\n') 33 sys.exit('用戶 %s 達到最大登陸次數,將被鎖定並退出' % name) 34 else: 35 pass 36 else: 37 if u != 2: #i=2時,是最後一次機會,不用在提示還剩餘0次機會了 38 print('用戶%s 不存在,請從新輸入,還有%d 次機會' %(name,2 - u)) 39 u += 1 40 else: 41 sys.exit('由於您的錯誤輸入,程序已經退出,請從新運行') 42 lock_file.close() 43 user_file.close()