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