作業:編寫登陸接口
- 輸入用戶名密碼
- 認證成功后顯示歡迎信息
- 輸錯三次后鎖定
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!')
