Python實(shí)現(xiàn)登錄接口的示例代碼
之前寫了Python實(shí)現(xiàn)登錄接口的示例代碼,最近需要回顧,就順便發(fā)到隨筆上了
要求:
1.輸入用戶名和密碼
2.認(rèn)證成功,顯示歡迎信息
3.用戶名3次輸入錯(cuò)誤后,退出程序
4.密碼3次輸入錯(cuò)誤后,鎖定用戶名
Readme:
1.UserList.txt 是存放用戶名和密碼的文件,格式為:username: password,每行存放一條用戶信息
2.LockList.txt 是存放已被鎖定用戶名的文件,默認(rèn)為空
3.用戶輸入用戶名,程序首先查詢鎖定名單 LockList.txt,如果用戶名在里面,提示用戶被鎖定,并退出程序
4.如果用戶名不在鎖定名單里,程序?qū)⒉樵冇脩裘麊?UserList.txt ,如果用戶名不在里面,將提示用戶不存在,請(qǐng)重新輸入,三次輸入錯(cuò)誤,將退出程序
5.如果用戶名在用戶名單里,將提示用戶輸入密碼,密碼正確,顯示歡迎信息;3次輸入錯(cuò)誤,將鎖定此用戶名(寫入鎖定名單)
流程圖:

代碼:
# Joe Young
import os, sys, getpass
os.system('cls') #調(diào)用os模塊的system方法傳入'cls'參數(shù),清屏
count = 0 #用戶名登錄次數(shù)計(jì)數(shù)
while count < 3:
username = input('username:')
lock_file = open('LockList.txt', 'r+') #打開LockList.txt文件,權(quán)限r(nóng)+(打開用于讀和寫文件。文件指針置于該文件的開頭)
lock_list = lock_file.readlines() #使用readlines()方法逐行讀取LockList.txt,生成列表,并賦值給lock_list
for lock_line in lock_list:
if username == lock_line.strip('\n'): #使用strip()方法去掉換行符,判斷username是否在LockList.txt
print('用戶名 %s 已被鎖定,請(qǐng)聯(lián)系管理員...' %(username))
sys.exit(1) #sys模塊的exit()方法表示退出
with open('UserList.txt', 'r') as user_file: #打開UserList.txt,權(quán)限只讀
user_list = user_file.readlines() #逐行讀取UserList.txt文件,賦值給user_list變量
for user_line in user_list:
(user, passwd) = user_line.strip('\n').split(': ') #獲取user,passwd的值,用split(': ')實(shí)現(xiàn)分割字符串
if user == username: #判斷用戶名是否在UserList.txt文件內(nèi)
n = 0 #密碼輸入次數(shù)計(jì)數(shù)
while n < 3: #3次輸入機(jī)會(huì)
password = getpass.getpass('password:') #使用getpass模塊的getpass()方法獲取用戶輸入的密碼
if password == passwd: #判斷密碼是否匹配
print('歡迎 %s 登陸系統(tǒng)!' %(username))
sys.exit(0)
else:
if n != 2: #n=2時(shí),是最后一次機(jī)會(huì),不需要提示還剩下0次機(jī)會(huì)
print('密碼錯(cuò)誤,請(qǐng)重新輸入,您還有 %d 次機(jī)會(huì)\n' %(2-n))
n += 1 #密碼輸入錯(cuò)誤,次數(shù)+1
else:
lock_file.write(username + '\n') #密碼輸入錯(cuò)誤次數(shù)達(dá)到3次,把用戶名寫入LockList.txt文件,鎖定用戶名
sys.exit('錯(cuò)誤次數(shù)過(guò)多,用戶名已被鎖定...') #程序退出,并輸出提示
else: #用戶名不存在,執(zhí)行else語(yǔ)句
if count != 2: #count=2時(shí),是最后一次輸入用戶名的機(jī)會(huì),不用提示還剩下0次機(jī)會(huì)了
print('用戶名不存在,請(qǐng)重試,您還有 %d 次機(jī)會(huì)\n' %(2-count))
count += 1 #用戶名輸入錯(cuò)誤,count+1
else: #用戶名輸入錯(cuò)誤次數(shù)達(dá)到3次
sys.exit('輸入次數(shù)過(guò)多,程序已退出...') #退出程序,并輸出提示
lock_file.close() #關(guān)閉LockList.txt文件
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python進(jìn)程和線程用法知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理了關(guān)于python進(jìn)程和線程用法以及相關(guān)實(shí)例內(nèi)容,需要的朋友們跟著學(xué)習(xí)下。2019-05-05
windows下安裝Python虛擬環(huán)境virtualenvwrapper-win
這篇文章主要介紹了windows下安裝Python虛擬環(huán)境virtualenvwrapper-win,內(nèi)容超簡(jiǎn)單,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06
Python數(shù)據(jù)分析numpy的Nan和Inf使用注意點(diǎn)詳解
這篇文章主要為大家介紹了Python數(shù)據(jù)分析numpy的Nan和Inf使用注意點(diǎn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
利用Python進(jìn)行數(shù)據(jù)可視化的實(shí)例代碼
數(shù)據(jù)可視化和數(shù)據(jù)挖掘都是探索數(shù)據(jù)和分析數(shù)據(jù)的一種手段,下面這篇文章主要給大家介紹了關(guān)于如何利用Python進(jìn)行數(shù)據(jù)可視化的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09
python批量telnet檢測(cè)IP地址的端口是否開放
本文主要介紹了python批量telnet檢測(cè)IP地址的端口是否開放,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
Python turtle實(shí)現(xiàn)貪吃蛇游戲
這篇文章主要為大家詳細(xì)介紹了Python turtle實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
Python面向?qū)ο蟪绦蛟O(shè)計(jì)之類的定義與繼承簡(jiǎn)單示例
這篇文章主要介紹了Python面向?qū)ο蟪绦蛟O(shè)計(jì)之類的定義與繼承,結(jié)合完整實(shí)例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中類的定義、調(diào)用、繼承及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-03-03
使用Python爬取小姐姐圖片(beautifulsoup法)
這篇文章主要介紹了Python爬取小姐姐圖片(beautifulsoup法),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02

