python初學之使用者登入的實現過程 例項講解

2022-10-04 20:33:37 字數 3275 閱讀 8136

要求編寫登入介面:

1. 輸入使用者名稱和密碼

2.認證成功後顯示歡迎資訊

3.使用者名稱輸錯,提示使用者不存在,重新輸入(5次錯誤,提示嘗試次數過多,退出程式)

4.使用者名稱正確,密碼錯誤,提示密碼錯誤,重新輸入.(密碼錯誤3次,鎖定使用者名稱並提示,退出程式)

readme

應用知識點:

一、檔案的操作

基本操作

f = open('lyrics','r',) #開啟檔案

first_line = f.readline()

print('first line:',first_line) #讀一行

data = f.read()# 讀取剩下的所有內容,檔案大時不要用

print(data) #列印檔案

f.close() #關閉檔案

開啟檔案的模式有:

r,唯讀模式(預設)。

w,只寫模式。【不可讀;不存在則建立;存在則刪除內容;】

a,追加模式。【可讀;不存在則建立;存在則只追加內容;】

with語句,同時開啟多個檔案,還可以避免開啟檔案後忘記關閉,語法:

with open('file1', 'r', encoding='utf-8') as f , \

open('file2', 'w', encoding='utf-8') as f_2 :

...本例中有2個檔案,乙個存使用者名稱和密碼,另乙個存黑名單.在讀取檔案後怎樣轉變成python物件,然後對物件進行操作,是我遇到的第乙個難點!

然後查了下資料,發現字串s方法,可以把字串,從逗號分隔符的地方斷開,得到乙個子字串列表.這樣一來,就可以對黑名單進行查詢等操作了.

...user_lis_bak = f.readline().split(',')

...python 字典 setdefault() 函式和get()方法類似, 如果鍵不已經存在於字典中,將會新增鍵並將值設為預設值。

dict.setdefault(key, default=none)

二、列表和字典

列表是我們最以後最常用的資料型別之一,通過列表可以對資料實現最方便的儲存、修改等操作

names = ['xiaoli',"xiaoming",'yuanlu']

通過下標訪問列表中的元素,下標從0開始計數

>>> names[0]

'xiaoli'

>>> names[1]

'xiaoming'

>>> names[-1]

'yuanlu'

>>> names[-2] #還可以倒著取

'xiaoming'

字典是一種key - value 的資料型別,使用就像我們上學用的字典,通過筆劃、字母來查對應頁的詳細內容。

info =

這裡key是使用者名稱,value是密碼,一一對應,key是唯一的.

三、for loop 和 if...else

for i in range(10): print(i)

還是上面的程式,但是遇到大於5的迴圈次數就不走了,直接退出

for i in range(10):

if i>5:

continue #不往下走了,直接進入下一次loop

print(i)

使用者名稱和密碼檔案格式:

xiaoli 123456

xiaoming 888888

wangpeng 111111

luyuan 112222

qiling 556666

haiming 223333

黑名單檔案格式:

xiaoli,xiaoming,wangpeng,

**with open('user_lis', 'r', encoding='utf-8') as f_user_lis,\

open('user_lis_bak', 'r', encoding='utf-8') as f_user_lis_bak: # 開啟檔案程式設計客棧'user_lis'和'user_lis_bak'

user_lis_bak = f_user_lis_bak.read().split(',') # 讀取f_user_lis_bak並轉成列表賦值給 user_lis_bak

user_lis_dictwww.cppcns.com = {} # 定義乙個空字典

for i in f_user_lis:

user_lis_dict.setdefault(i.split()[ i.split()[1]) # 讀取f_user_lis並把值放入字典user_lis_dict中

count = 0

for i in range(5): # 設定錯誤次數上限為5次

name = input('>')

password = input('>')

if name in user_lis_bak: # 第一步先查詢黑名單

print('使用者名稱已被鎖定,請聯絡管理員!!!')

continue # 在黑名單中直接進入下一次迴圈,重新輸入使用者名稱和密碼

elif name in u程式設計客棧ser_lis_dict: # 第二步查詢使用者白名單

if password == user_lis_dict.get(name): # 密碼正確,驗證通過 退出

print('親愛的會員', name, '歡迎回來')

break

else: # 密碼錯誤,提示錯誤

if count == 2:

name_bak_write = open('user_lis_bak', 'a', encoding='utf-8')

name_bak_write.write(name+',')

name_bak_write.close() # 3次密碼錯誤,就把使用者名稱寫進黑名單

print('使用者名稱已鎖定,請聯絡管理員!!!')

break

print('密碼錯誤!!!')

count += 1 # 密碼錯一次,count就+1

else:

if i == 4: # 使用者名稱錯5次,直接退出

print('嘗試次數過多,再見!!!')

continue

print('使用者名稱不存在!!!') # 使用者名稱錯誤,提示錯誤

本文標題: python初學之使用者登入的實現過程(例項講解)

本文位址:

使用者模組之使用者登入

使用者登入流程 接受資料 接受瀏覽器傳遞過來的資料 校驗資料 資料完整性校驗 all 業務處理 登入校驗 登入認證 authenticate username username,password password 認證一組給定的使用者名稱和密碼 判斷使用者已啟用 記錄使用者的登入狀態,login r...

linux初學之使用者管理

2 使用者刪除 userdel r 使用者名稱 r表示刪除使用者資訊及使用者的系統配置 3.組的建立 groupadd g 建立組 groupdel 組名字 刪除組 作以上實驗的監控命令 watch n 1 tail n 3 etc passwd etc group echo ls l home e...

Django學習之使用者登入

前面說了,使用者註冊,今天我們就來說說使用者登入吧。今天說的是使用django的session功能,而不是它的auth模組,後期,如果有機會的話,我再寫點auth認證登入。其實重點就是request.session功能,預設django就將其session功能開啟了,我們僅僅需要的是配置下資料庫。w...