要求spa
1.輸入用戶名與密碼code
2.驗證成功顯示歡迎頁blog
3.輸入錯誤3次,鎖定用戶名ip
也是看了很是多的大神,老師,師兄的代碼啓發,才寫出以下的重寫版input
這條代碼也是瞎幾把搞才研究出來的,具體原理不是很懂it
name = dict(k.strip().split('=') for k in name_list.readlines())
若是把 strip() 和 split('=') 的位置互換一下 那麼就會報錯 緣由估計是 strip() 只能對 str類型操做
已知BUG:
1.輸入2次同一個正確的用戶名和錯誤的密碼,第3次輸入另外一個正確的用戶名和錯誤的密碼,則鎖定第3次輸入的用戶名
用戶名與密碼文件 name_list.ini 內容以下:class
mask=123原理
jake=123qq密碼
qb11=123qweim
鎖定用戶列表文件 lock_list.ini 內容默認爲空:
i = 0 g = 3 w = 0 j = 0 print(''' ************************************* 歡迎使用登入系統 *************************************''') while i < 4: i = i + 1 i_name = input('請輸入您的用戶名:') #輸入用戶名
name_list = open('name_list.ini','r') #讀取用戶名和密碼字典
name = dict(k.strip().split('=') for k in name_list.readlines()) name_list.close() lock_list = open('lock_list.ini','r')# 讀取被鎖定用戶名
lock = [k.strip() for k in lock_list.readlines()] lock_list.close() lk = i_name in lock #輸入的用戶名 對比 鎖定列表
f = i_name in name #輸入的用戶名 對比 註冊已用戶名
if len(i_name) == 0 or j == 3: #檢查輸入的用戶名是否爲空
print('您輸入的用戶名爲空') j = j + 1
if j == 3: print('您已經連續輸入3次空用戶名了,系統強制退出') i = 4
elif lk == True: print('您的用戶名已被鎖定,請聯繫管理員') i = i + 4
elif f == False: w = w + 1
print('您輸入的用戶名無效,請從新輸入') if w == 3: print('您已經輸入了3次數無效用戶名了,系統強制退出,') i = 4
elif f == True: #若是用戶名正確 則取其密碼,讓用戶輸入密碼
mima = name[i_name] i_mima = input('請輸入您的密碼:') if i_mima == mima: print('歡迎光臨,%s'%i_name) #密碼正確 顯示歡迎頁
i = 4
else: g = g - 1
print('用戶名或密碼錯誤\n(您還有%s次機會)'%g) if g == 0: print('您已經輸入了3次錯誤的密碼,已被系統鎖定') a = open('lock_list.ini','a')#密碼錯誤3次,寫入用戶名到鎖定列表
a.write(str(i_name + '\n')) a.close() i = 4
能否再精簡代碼?
能否增強功能?