登錄模塊: 我們無論上那個網站,經常遇到這樣的情況,讓我們登錄這個網站,流程圖如下: 思路: 1.當我們登錄網站的時候,我們首先會輸入用戶名,這個時候,有些網站會提醒我們用戶名是否存在,如果我們輸入的用戶名不存在的話,會出現提示,告訴我們用戶名不存在,這個時候,我們就需要重新輸入,或者選擇註冊,當然 ...
登錄模塊:
我們無論上那個網站,經常遇到這樣的情況,讓我們登錄這個網站,流程圖如下:
思路:
1.當我們登錄網站的時候,我們首先會輸入用戶名,這個時候,有些網站會提醒我們用戶名是否存在,如果我們輸入的用戶名不存在的話,會出現提示,告訴我們用戶名不存在,這個時候,我們就需要重新輸入,或者選擇註冊,當然,我們這裡只是讓用戶重新輸入;
2.用戶名存在的話,就需要輸入密碼,我們知道,輸入密碼的時候,我們是不驗證密碼是否正確的,如果直接先驗證密碼是否正確,也就失去了讓用戶輸入驗證碼的作用,因此我們總是先不驗證密碼,而是讓用戶輸入驗證碼,先驗證用戶輸入的驗證碼是否正確;
3.如果驗證碼不正確,則讓用戶重新輸入驗證碼;如果驗證碼正確,那麼這個時候就要返回來重新驗證密碼是否正確;如果密碼正確,就登錄成功了;否則,如果密碼不正確,這個時候,就需要用戶重新輸入密碼,由於這個時候,用戶已經輸入了用戶名,因此不需要再重新輸入用戶名了,只需要輸入密碼和驗證碼即可;即重新輸入密碼,然後輸入驗證碼;如果密碼正確,則登錄成功,否則重新輸入密碼和驗證碼,驗證碼是每次輸入密碼必須輸入的;
要實現上述代碼的功能,肯定要使用while迴圈,由於是逐層檢驗,因此用戶名的輸入肯定是一個迴圈,直到用戶輸入正確的驗證碼為止,關鍵是,如何實現用戶名正確,當密碼或者驗證碼輸入錯誤的時候,不需要重新輸入用戶名,不然會讓人鄙視的;這個時候就要考慮,當用戶名正確的時候,就要停止這個迴圈了,不能再執行下一次用戶輸入密碼或驗證碼的時候迴圈輸入用戶名。
代碼的實現如下:
def login(name,password): '''用戶登錄模塊,用戶登錄時候的各種設置,本次實現功能''' '''用戶登錄驗證的時候,一般會先判斷驗證碼是否正確,因此要讓用戶首先驗證驗證碼''' active = True while True: while active: username = input("請輸入你的用戶名:") '''首先驗證用戶名是否存在''' users = [] for user_list in userfile.usernames: users.append(user_list[0]) if username in users: active = False else: print("對不起,您輸入的用戶名不存在,請重新輸入:") pwd = input("請輸入你的密碼:") while True: '''加入一個用戶輸入驗證碼的模塊,讓用戶輸入驗證碼''' verification_code = str(random.randint(0,9)) + chr(random.randint(65,90)) + str(random.randint(0,9)) + chr(random.randint(97,122)) print(verification_code) test_num = input("請輸入驗證碼:") if test_num == verification_code.lower() or test_num == verification_code.upper(): '''無論用戶輸入大小寫都可以驗證成功''' '''用戶驗證成功後,開始進行用戶自己的認證,是否註冊,或者用戶名正確''' break else: print("您輸入的驗證碼有誤,請重新輸入!") if [username,int(pwd)] in userfile.usernames: print("Successful!") return (username,pwd) else: print("對不起,您輸入的密碼有誤,請重新輸入:")
上述代碼運行如下:
請輸入你的用戶名:geng 請輸入你的密碼:123 3D0t 請輸入驗證碼:3d0t 對不起,您輸入的密碼有誤,請重新輸入: 請輸入你的密碼:222 8I9z 請輸入驗證碼:8888 您輸入的驗證碼有誤,請重新輸入! 2G0j 請輸入驗證碼:8888 您輸入的驗證碼有誤,請重新輸入! 7T1a 請輸入驗證碼:7t1a 對不起,您輸入的密碼有誤,請重新輸入: 請輸入你的密碼:2222 7X4q 請輸入驗證碼:7x4q 對不起,您輸入的密碼有誤,請重新輸入: 請輸入你的密碼:666 2O0q 請輸入驗證碼:2o0q Successful! ('geng', '666')
上述代碼的執行結果如上所示,當我們想單獨停止一個迴圈的時候,可以給這段迴圈設置一個標識符,用來開啟或者關閉迴圈,當滿足條件的時候,關閉這個迴圈,讓這個迴圈在執行其他程式的時候不會開啟;
active = True
while True:
while active:
username = input("請輸入你的用戶名:")
'''首先驗證用戶名是否存在'''
users = []
for user_list in userfile.usernames:
users.append(user_list[0])
if username in users:
active = False
else:
print("對不起,您輸入的用戶名不存在,請重新輸入:")
pwd = input("請輸入你的密碼:")
上述代碼,我們就實現了這樣的功能,當我們想停止這個迴圈的時候,我們就讓內層迴圈的標識符關閉。