python初學(xué)之用戶登錄的實(shí)現(xiàn)過程(實(shí)例講解)
要求編寫登錄接口:
1. 輸入用戶名和密碼
2.認(rèn)證成功后顯示歡迎信息
3.用戶名輸錯,提示用戶不存在,重新輸入(5次錯誤,提示嘗試次數(shù)過多,退出程序)
4.用戶名正確,密碼錯誤,提示密碼錯誤,重新輸入.(密碼錯誤3次,鎖定用戶名并提示,退出程序)
readme
應(yīng)用知識點(diǎn):
一、文件的操作
基本操作
f = open('lyrics','r',) #打開文件
first_line = f.readline()
print('first line:',first_line) #讀一行
data = f.read()# 讀取剩下的所有內(nèi)容,文件大時不要用
print(data) #打印文件
f.close() #關(guān)閉文件
打開文件的模式有:
r,只讀模式(默認(rèn))。
w,只寫模式?!静豢勺x;不存在則創(chuàng)建;存在則刪除內(nèi)容;】
a,追加模式。【可讀;不存在則創(chuàng)建;存在則只追加內(nèi)容;】
with語句,同時打開多個文件,還可以避免打開文件后忘記關(guān)閉,語法:
with open('file1', 'r', encoding='utf-8') as f , \
open('file2', 'w', encoding='utf-8') as f_2 :
...
本例中有2個文件,一個存用戶名和密碼,另一個存黑名單.在讀取文件后怎樣轉(zhuǎn)變成python對象,然后對對象進(jìn)行操作,是我遇到的第一個難點(diǎn)!
然后查了下資料,發(fā)現(xiàn)字符串split方法,可以把字符串,從逗號分隔符的地方斷開,得到一個子字符串列表.這樣一來,就可以對黑名單進(jìn)行查找等操作了.
...
user_lis_bak = f.readline().split(',')
...
Python 字典 setdefault() 函數(shù)和get()方法類似, 如果鍵不已經(jīng)存在于字典中,將會添加鍵并將值設(shè)為默認(rèn)值。
dict.setdefault(key, default=None)
二、列表和字典
列表是我們最以后最常用的數(shù)據(jù)類型之一,通過列表可以對數(shù)據(jù)實(shí)現(xiàn)最方便的存儲、修改等操作
names = ['xiaoli',"xiaoming",'yuanlu']
通過下標(biāo)訪問列表中的元素,下標(biāo)從0開始計(jì)數(shù)
>>> names[0] 'xiaoli' >>> names[1] 'xiaoming' >>> names[-1] 'yuanlu' >>> names[-2] #還可以倒著取 'xiaoming'
字典是一種key - value 的數(shù)據(jù)類型,使用就像我們上學(xué)用的字典,通過筆劃、字母來查對應(yīng)頁的詳細(xì)內(nèi)容。
info = {
'xiaoli': "123456",
'xiaoming': "111111",
'yuanlu': "888888",
}
這里key是用戶名,value是密碼,一一對應(yīng),key是唯一的.
三、for loop 和 if...else
for i in range(10): print(i)
還是上面的程序,但是遇到大于5的循環(huán)次數(shù)就不走了,直接退出
for i in range(10):
if i>5:
continue #不往下走了,直接進(jìn)入下一次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并轉(zhuǎn)成列表賦值給 user_lis_bak
user_lis_dict = {} # 定義一個空字典
for i in f_user_lis:
user_lis_dict.setdefault(i.split()[0], i.split()[1]) # 讀取f_user_lis并把值放入字典user_lis_dict中
count = 0
for i in range(5): # 設(shè)置錯誤次數(shù)上限為5次
name = input('請輸入用戶名>>')
password = input('請輸入密碼>>')
if name in user_lis_bak: # 第一步先查找黑名單
print('用戶名已被鎖定,請聯(lián)系管理員!!!')
continue # 在黑名單中直接進(jìn)入下一次循環(huán),重新輸入用戶名和密碼
elif name in user_lis_dict: # 第二步查找用戶白名單
if password == user_lis_dict.get(name): # 密碼正確,驗(yàn)證通過 退出
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次密碼錯誤,就把用戶名寫進(jìn)黑名單
print('用戶名已鎖定,請聯(lián)系管理員!!!')
break
print('密碼錯誤!!!')
count += 1 # 密碼錯一次,count就+1
else:
if i == 4: # 用戶名錯5次,直接退出
print('嘗試次數(shù)過多,再見!!!')
continue
print('用戶名不存在!!!') # 用戶名錯誤,提示錯誤
以上這篇python初學(xué)之用戶登錄的實(shí)現(xiàn)過程(實(shí)例講解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Python的Flask框架中實(shí)現(xiàn)登錄用戶的個人資料和頭像的教程
- python實(shí)現(xiàn)用戶登錄系統(tǒng)
- Python 用戶登錄驗(yàn)證的小例子
- Python模擬用戶登錄驗(yàn)證
- python3.0 模擬用戶登錄,三次錯誤鎖定的實(shí)例
- Python實(shí)現(xiàn)的用戶登錄系統(tǒng)功能示例
- 詳解Python用戶登錄接口的方法
- python實(shí)現(xiàn)根據(jù)用戶輸入從電影網(wǎng)站獲取影片信息的方法
- 使用python實(shí)現(xiàn)生成用戶信息
- python-itchat 獲取微信群用戶信息的實(shí)例
- python實(shí)現(xiàn)得到當(dāng)前登錄用戶信息的方法
相關(guān)文章
Python??Pandas教程之使用?pandas.read_csv()?讀取?csv
這篇文章主要介紹了Python Pandas教程之使用pandas.read_csv()讀取csv,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09
Python讀取配置文件(config.ini)以及寫入配置文件
這篇文章主要介紹了Python讀取配置文件(config.ini)以及寫入配置文件,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
django的ORM操作 刪除和編輯實(shí)現(xiàn)詳解
這篇文章主要介紹了django的ORM操作 刪除和編輯實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07

