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