編寫登陸介面 基礎需求: 讓用戶輸入用戶名密碼 認證成功後顯示歡迎信息 輸錯三次後退出程式 升級需求: 可以支持多個用戶登錄 (提示,通過列表存多個賬戶信息) 用戶3次認證失敗後,退出程式,再次啟動程式嘗試登錄時,還是鎖定狀態(提示:需把用戶鎖定的狀態存到文件里) 註:需要先創建一個lock_fil ...
編寫登陸介面
基礎需求:
- 讓用戶輸入用戶名密碼
- 認證成功後顯示歡迎信息
- 輸錯三次後退出程式
升級需求:
- 可以支持多個用戶登錄 (提示,通過列表存多個賬戶信息)
- 用戶3次認證失敗後,退出程式,再次啟動程式嘗試登錄時,還是鎖定狀態(提示:需把用戶鎖定的狀態存到文件里)
1 users = [['ziv', '666'], ['alex', '213']] 2 login_state = False 3 # 設置用戶登陸狀態為False的標誌 4 count = 0 5 username_count = [] # 用來計算用戶登陸次數 6 user_name = [] 7 lock_users = [] 8 f = open('lock_file.txt', 'r', encoding='utf-8') 9 # 讀取文件里已被鎖定用戶的信息 10 for i in f: 11 lock_users.append(i.strip()) 12 while count < 3: 13 username = input('Username:').strip() 14 password = input('Password:').strip() 15 username_count.append(username) 16 # 將用戶輸入的用戶名添加到計數列表 17 if username in lock_users: 18 exit('用戶已被鎖定') 19 for user_item in users: 20 if username == user_item[0] and password == user_item[1]: 21 print('登陸成功') 22 login_state = True # 登陸成功,login_state改為True 23 break # 跳出for迴圈 24 else: 25 print('用戶名或密碼錯誤') 26 # for 迴圈正常執行完(登錄成功會被break,不會執行else,反之執行),再執行else 27 if login_state: 28 break # 用來跳出while迴圈 29 count += 1 30 else: 31 print('錯誤次數過多') # 登錄成功while被break,不會執行else,反之執行 32 for lock in username_count: 33 user_name.append(lock) 34 if user_name.count(lock) >= 3: # 列表裡面出現次數超過3次的用戶名 35 lock_write = open('lock_file.txt', 'a', encoding='utf-8') 36 lock_write.write(lock+'\n') 37 lock_write.close() 38 print('鎖定用戶:', lock)
註:需要先創建一個lock_file.txt文件,文件可以為空。