python之路--實現登入三次後鎖定功能
阿新 • • 發佈:2019-01-24
0x00
上次面試時問我是否在學python,我以前也接觸過,但是到了字典那兒怎麼也明白不了,然後不了了之,也從網上學過爬蟲,還是記得一丁點東西的,嘻嘻
最近在跟著老男孩學習python,Alex講師說過一句話,人總是高看自己。這點我是比較認同的,總是覺得自學就可以學的好了,其實不然,要不然要老師幹什麼?
我是自學的,沒有錢也不可能報學習班,我也是簡單瞭解一下,別到時候什麼也不知道,不做小白,也不做大佬,慢慢學習,慢慢積累。
0x01
實現的功能是:
作業二:編寫登陸介面
輸入使用者名稱密碼
認證成功後顯示歡迎資訊
輸錯三次後鎖定
其中用到的知識點就是迴圈和檔案,以及sys.exit()的跳出,還有一些字串的語句
import os,sys #匯入模組
count = 0 #計數,大於三次鎖定使用者名稱
while count < 3:
username = input("username:") #輸入使用者名稱
file = open("suoding.txt",'r') #以讀的方式開啟鎖定文件
lines = file.readlines() #以讀取行的方式讀取資料
for i in lines: #for迴圈,
ceshi = username+"\n" #因為他需要一個換行符一行一行的顯示,那時候我什麼也不知道,直接這樣加了 用strip()語句即可
if ceshi == i:
print("使用者%s已經鎖定,請聯絡您的管理員" % username)
file.close() #關閉檔案
sys.exit(1)
f1 = open("ceshi.txt","r")
user_list = f1.readlines()
for user in user_list:
(user,passwd) = user.strip('\n').split() #將使用者和密碼通過換行符截取出來
if username == user:
p = 0 #定義密碼輸入的次數,大於三次直接鎖定使用者名稱
while p < 3: #下面就是一個迴圈,如果正確就登入,如果錯誤,提示剩餘的密碼輸入次數
password = input("password:")
if password == passwd:
print("歡迎%s登入系統" %username)
sys.exit(0)
else:
if p!=2:
print("對不起,%s的密碼錯誤,請重新輸入,你還有%d次機會" %(username,2-p))
p += 1
else:
f.write("%s \n" %username)
sys.exit("對不起,%s使用者已經鎖定,請聯絡管理員" %username)
else:
pass
else:
if count != 2:
print('對不起,%s 輸入錯誤,請重新輸入,你還有 %d 次機會' %(username,2 - count))
count += 1 #計數遞增
else:
sys.exit("輸入次數太多,程式自動退出,請重新執行")
f.close() #關閉檔案
其中的一些難點就是擷取字元的語句,sys模組的使用方式,邏輯思維方式
寫程式時一定要寫一個邏輯圖,這樣就相當於打了一個框架,只要往裡面填東西就行了
就像html的div+css,打好框架,一步一步的寫內容,寫css,讓它有血有肉,成為優秀的前端
0x02
作業三:多級選單
三級選單
可依次選擇進入各子選單
所需新知識點:列表、字典
這個作業,先得寫一個三維陣列,山東省->德州市->德城區,山東省->濟南市->歷城區,山東省->德州市->慶雲縣等等
menu_dt = {“山東省{德州市[德城區],濟南市[歷城區],青島市[即墨縣],煙臺市[],濱州市[],棗莊市[]}”,“浙江省{}”,“重慶市{}”}
要注意,必須要英文狀態下的分號和引號才不報錯
然後一遍一遍的遍歷
其中就是在每一個選單欄下,輸入q都可直接退出,輸入其他命令返回上一選單
我到現在還沒有想法,根本不懂如何返回上一層
可以寫個函式,一直呼叫
看看大佬的文章
嗯,就這樣吧