在剛開始學習Python幾天的時候,就碰到一個模擬登陸的題目:輸入賬號密碼,連續錯誤三次就將賬號鎖定,而且在下一次打開運行的時候,顯示的是賬戶鎖定,而不是又輸入賬號密碼
納尼,我曉得做個錘子,偶才學到判斷和循環,你要偶來做這個,還是闊以鎖定賬號滴,偶的個乖乖!
然後我就這樣寫交了上去
# -*- coding: utf-8 -*-
name = 'lxl'
password = 123
passed_authentication = False
for i in range(3):
Username = input('請輸入您的賬號:')
Password = input('請輸入你的密碼:')
if Username == name and Password == password:
print('歡迎 %s 登陸...' % name)
passed_authentication = True # 真,成立
break # 跳出循環,中斷
else:
print('您輸入的賬號或者密碼錯誤')
if not passed_authentication: # 只有在True的情況下,條件成立
print("連續三次錯誤,該賬戶已被鎖定")
這樣子寫的缺點很明顯,就是重新運行一下一樣可以再次驗證
一直學到了文件流和json,才知道怎麼實現三次鎖定賬戶:我們知道,賬號密碼等信息都是存儲在數據庫中,而我還沒有學到數據庫,只能用文件來代替數據庫了,嘿嘿
我覺得我做的還是有很多地方不好,希望各位能給點建議,學習學習
首先得註冊一個賬號密碼:(這樣寫還有一個很嚴重的缺陷,只能弄一個賬號,再次註冊把原來的覆蓋了)
# -*- coding: utf-8 -*-
import random
import json
Username = ''
for i in range(5):
add = random.choice([random.randrange(10)])
Username += str(add)
print("您申請的賬號:%s"%Username)
passed_authentication = False
for i in range(3):
Password = input('請輸入你的密碼:')
Password1 = input('請再次輸入你的密碼:')
if Password == Password1:
dict = {"Name": Username, "Password": Password, "State": "normal"}
with open('Json', 'w', encoding='utf8') as fb:
fb.write(json.dumps(dict))
passed_authentication = True # 真,成立
break # 跳出循環,中斷
else:
print("您兩次輸入的密碼不同")
if not passed_authentication: # 只有在True的情況下,條件成立
print("你逗我玩呢")
驗證登陸:
# -*- coding: utf-8 -*-
import json
with open('Json','r',encoding='utf8') as r:
reads = json.loads(r.read())
name = reads['Name']
password = reads['Password']
State = reads['State']
passed_authentication = False
for i in range(3):
if State == 'normal':
pass
else:
print("您的賬號已被鎖定")
break
Username = input('請輸入您的賬號:')
Password = input('請輸入你的密碼:')
if Username == name and Password == password:
print('歡迎 %s 登陸...' % name)
passed_authentication = True # 真,成立
break # 跳出循環,中斷
else:
print('您輸入的賬號或者密碼錯誤')
if not passed_authentication: # 只有在True的情況下,條件成立
dict = {"Name": name, "Password": password, "State": "lock"}
with open('Json', 'w', encoding='utf8') as fb:
fb.write(json.dumps(dict))
print("您的賬戶已被鎖定")
做出來的四不像,弄得我自己都看不下去了,願各位大佬幫幫忙,完善一下這個鬼東東