Python程序練習1-模擬用戶登陸驗證

1.功能簡介

此程序模擬用戶登陸驗證的過程,實現用戶名輸入、黑名單檢測、用戶有效性判別、密碼輸入及驗證等。用戶在3次之內輸入正確密碼登錄成功,連續輸錯3次密碼登錄失敗,且該用戶名被記錄在黑名單,黑名單中的用戶被鎖定不能再登錄。python

 

2.實現方法

本程序採用python語言編寫,將各項任務進行分解並用定義對應的函數來處理,從而使程序結構清晰,易於維護。主要編寫了四個函數:框架

 
  1. login() #登錄函數,爲主函數,完成用戶名檢測和密碼驗證
  2. inquire_blacklist(name) #查詢用戶名是否在黑名單中
  3. inquire_userlist(name) #查詢用戶名是否在用戶名單中,並返回密碼或None
  4. add_blacklist(name) #添加用戶名到黑名單文件

函數調用框架:運行login()-->輸入用戶名-->調用inquire_blacklist(name)進行黑名單檢測-->調用inquire_userlist(name)進行用戶名有效性判別,有效則返回用戶密碼,再與輸入密碼對比驗證-->連續輸錯3次密碼則調用add_blacklist(name)添加用戶到黑名單。ide

 

3.流程圖

4.代碼

 1 # Author:Byron Li
 2 
 3 import os
 4 BASE_DIR = os.path.dirname(__file__)   #獲取文件目錄路徑
 5 userlist='userlist.txt'     #存取已註冊用戶名單文件,包括用戶名和密碼
 6 blacklist='blacklist.txt'   #存取鎖定用戶的黑名單文件
 7 userlist_path = os.path.join(BASE_DIR,userlist)    #註冊用戶名單文件路徑
 8 blacklist_path = os.path.join(BASE_DIR,blacklist)  #黑名單文件路徑
 9 
10 #----------------------------------------------登錄函數(主函數)-------------------------------------------------------
11 def login():  #登錄函數
12     username = input("請輸入用戶名:")
13     while(True):
14         if inquire_blacklist(username):     #查詢輸入用戶名是否在黑名單中
15             print("很差意思,此用戶名\"%s\"已被鎖定,禁止登錄!"%username)
16             return False
17         else:
18             user_password = inquire_userlist(username) #查詢輸入用戶名是否存在註冊用戶名單中,若存在則返回該用戶密碼
19             if user_password:
20                 for i in range(3):
21                     password = input("請輸入密碼:") if i==0 else input("密碼輸入錯誤,請從新輸入密碼:")
22                     if password==user_password:
23                         print('歡迎%s登錄!'%username)
24                         return True
25                 else:
26                     print("您已經連續輸錯密碼3次,用戶名將被鎖定,禁止再登錄!")
27                     add_blacklist(username)             #添加用戶名到黑名單文件
28                     return False
29             else:
30                 username = input('無效的用戶名,請從新輸入:')
31 # ----------------------------------------------------------------------------------------------------------------------
32 
33 
34 #----------------------------------------------查詢黑名單函數-----------------------------------------------------------
35 def inquire_blacklist(name):   #查詢用戶名是否在黑名單中
36     with open(blacklist_path, 'r') as f:
37         for line in f:
38             if name==line.strip():
39                 return True
40     return False
41 # ----------------------------------------------------------------------------------------------------------------------
42 
43 
44 #----------------------------------------------查詢用戶名函數-----------------------------------------------------------
45 def inquire_userlist(name):   #查詢用戶名是否在註冊用戶名單中
46     with open(userlist_path, 'r') as f:
47         for line in f:
48             [username,password] = line.split()
49             if name==username:
50                 return password
51     return None
52 # ----------------------------------------------------------------------------------------------------------------------
53 
54 
55 #----------------------------------------------添加黑名單函數-----------------------------------------------------------
56 def add_blacklist(name): #添加用戶名到黑名單文件
57     with open(blacklist_path, 'a') as f:
58         f.write(str(name)+'\n')
59     return True
60 # ----------------------------------------------------------------------------------------------------------------------
61 
62 if login():  #執行登錄函數
63     print('登錄成功!'.center(47,'*'))
64 else:
65     print('登錄失敗!'.center(47,'*'))
View Code
相關文章
相關標籤/搜索