作業:編寫登陸接口
- 輸入用戶名密碼
- 認證成功后顯示歡迎信息
- 輸錯三次后鎖定
1、流程圖
2、解鎖賬號
賬號被鎖定后,執行解鎖腳本代碼即可。
# -*- coding:utf-8 -*- # version:python3.5 import pickle # 初始化用戶以及密碼 user_dict = {'admin':{'passwd':'admin','flag':'unlock'}} # 把賬號、密碼保存到文件中 with open('account.pkl','wb') as f: pickle.dump(user_dict, f)
3、登錄接口,有選擇猜數字游戲選項
輸入正確賬號密碼后,可以選擇玩猜數字游戲。猜數字游戲由系統隨機生成一個1到10的數字,有3次機會猜數字。
#!/usr/bin/env python3 # -*- coding:utf-8 -*- # Version:python3.5.0 import pickle import os import random with open('account.pkl','rb') as f: # 載入用戶賬戶密碼信息 user_dict = pickle.load(f) exit_flag = False #初始化鎖定的狀態為false count_lock = 0 # 初始化賬號鎖定次數為0次 print('**********************************') while True: user = input('請輸入賬號: ').strip() if user == '':continue # 用戶名為空,重新輸入 passwd = input('請輸入密碼: ').strip() # 判斷是否存在輸入的賬號 if user_dict.get(user): # 判斷賬號是否鎖定,鎖定則退出。 if user_dict[user]['flag'] == 'lock': print('賬號已經鎖定,請解鎖!') break # 驗證密碼是否正確 if user_dict[user]['passwd'] == passwd: while True: guess_choise = input('你要開始玩猜數字游戲么?(選擇yes或no): ').strip() if guess_choise == '':continue elif guess_choise == 'yes': print('歡迎登陸Python自動化開發--猜數字系統') print('*******************************************') print('猜數字的范圍在1到10之間.') real_num = random.randrange(1,11) # 隨機生成1到10之間的一個數字 retry_count = 0 while retry_count < 3: # 有3次機會猜數字 guess_num = input('請輸入你猜的數字: ').strip() if guess_num == '':continue if guess_num.isdigit(): guess_num = int(guess_num ) if guess_num > real_num : print('錯誤,請輸入一個小一點的數字!') elif guess_num < real_num : print('錯誤,請輸入一個大一點的數字!') else: print('恭喜你,猜到你幸運的數字 %s !!!' % real_num) break else: print('輸入的不是數字,請重新輸入一個數字') continue retry_count +=1 else: print('哦哦,幸運數字是 %s,下次肯定會猜中的哦!' % real_num) print('-------------------------------------') elif guess_choise == 'no': # 不想猜數字游戲,則直接退出系統 print('歡迎再次登錄!') exit_flag = True break else: print('你輸入的不是yes或者no,請重新輸入。') continue else: count_lock += 1 # 密碼不正確,統計輸錯次數 if (3 - count_lock): print('賬號或密碼錯誤,還有 %s 次機會嘗試登陸!' % (3-count_lock)) if count_lock == 3: # 若鎖定次數有3次,就鎖定賬號 with open('account.pkl','wb') as f: user_dict['admin']['flag'] = 'lock' # 標志賬號admin為鎖定狀態 user_dict = pickle.dump(user_dict, f) # 修改后數據寫到 account.pkl中 print('*******************************************') print('賬號被鎖定,請解鎖!') break else: print('輸入的賬號不存在,請重新輸入!') continue if exit_flag: # 在猜數字游戲中,選擇no,則直接退出整個程序 break print('Bye bye!')