這章我們先來看看前面我們寫的這個模擬登入QQ的代碼。
username = '110119'
password = '123456'
while True:
input_username = input('請輸入你的賬號:')
input_password = input('請輸入你的密碼:')
if input_username == username and input_password:
print("登入成功")
while True:
action = input('請輸入你的操作')
if action == 'xxx':
break
print(f'正在看{action}')
break
else:
print('用戶名或密碼錯誤,請注意格式大小寫')
我現(xiàn)在有個新的需求,就是當用戶輸錯三次賬號密碼的時候,我們就不讓用戶輸入流,要實現(xiàn)這個功能。
首先得有一個變量保存用戶輸錯的次數(shù)對吧,所以我們在前面先定義一個變量,num=0.
username = '110119'
password = '123456'
num = 0
while True:
input_username = input('請輸入你的賬號:')
input_password = input('請輸入你的密碼:')
現(xiàn)在變量定義好了,接下來就要做的就是當用戶輸錯賬號密碼的時候我們就要給這個變量進行+1操作對吧。
就可以在打印‘用戶名或密碼錯誤,請注意格式大小寫’后面加一行代碼,num+=1。然后當用戶輸錯三次之后,打印‘賬號密碼已經(jīng)連續(xù)輸錯3次,賬號已鎖定’,然后結(jié)束循環(huán)。
username = '110119'
password = '123456'
num = 0
while True:
input_username = input('請輸入你的賬號:')
input_password = input('請輸入你的密碼:')
if input_username == username and input_password:
print("登入成功")
while True:
action = input('請輸入你的操作')
if action == 'q':
break
print(f'正在看{action}')
break
else:
print('用戶名或密碼錯誤,請注意格式大小寫')
num += 1
if num == 3:
print('賬號密碼已經(jīng)連續(xù)輸錯3次,賬號已鎖定')
break
這樣就實現(xiàn)了記錄用戶輸錯的次數(shù)。當然了,我們現(xiàn)在只是打印出了這樣的效果,等我們學到了數(shù)據(jù)庫之后就不單單只是打印了而是回去修改當前用戶的狀態(tài),讓當前用戶不能再登錄,這是后面才會講的知識了。
我們現(xiàn)在打印看看,是不是打印的效果和我們想的一樣,結(jié)果就是在三次之后退出循環(huán),結(jié)束代碼。
我們把這個功能實現(xiàn)了,但是又會在后面多加一個縮進,不夠簡潔和沒美觀,現(xiàn)在我們來看while的另一種用法。
while加else,用法很簡單,就直接加在while循環(huán)整個代碼塊后面就行了。
和if加else類似,if判斷的else所包含的代碼是在if判斷的條件不成立的情況下執(zhí)行。而while循環(huán)的else所包含的代碼,是在while循環(huán)正常結(jié)束之后,不被break打斷的情況下才會執(zhí)行。
我們繼續(xù)優(yōu)化模擬登入QQ的代碼。我們先要把第四行代碼改成while num <3,然后需要把num+=1下面的代碼刪掉,然后在外層寫else代碼,在else子代碼塊寫‘賬號密碼輸錯三次,已被鎖定’。
我們繼續(xù)打印試試,是否和上面的代碼打印效果一樣,結(jié)果就是形同的效果。只是代碼更簡潔美觀。
username = '110119'
password = '123456'
num = 0
while num < 3:
input_username = input('請輸入你的賬號:')
input_password = input('請輸入你的密碼:')
if input_username == username and input_password== password:
print("登入成功")
while True:
action = input('請輸入你的操作')
if action == 'xxx':
break
print(f'正在看{action}')
break
else:
print('用戶名或密碼錯誤,請注意格式大小寫')
num += 1
else:
print('賬號密碼輸錯三次,已被鎖定')
未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » Python while與else