要求編寫登入介面:
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...