做業:編寫登錄接口json
知識:api
1.循環的使用;數組
2.continue,break在循環中中斷的做用;網絡
3.文件的寫入,讀取;架構
4.各基礎知識的穿插應用app
1、程序架構圖dom
二、程序流程圖以下:函數
3、具體代碼及思路以下:學習
1.導入模塊,及主程序頁面測試
import os,json,random def main_show(): '''進入主頁展現''' login_message = ''' ------------------------------------------------------------------------------------------------- 您好,歡迎來到京東二貨市場 ------------------------------------------------------------------------------------------------- 【1】登陸 【2】註冊 【3】解鎖 【q】退出 ------------------------------------------------------------------------------------------------- ''' print(login_message)
設置程序進入樣式,告訴用戶進去是什麼樣子,平臺的功能,而不是進去啥都沒有。程序要使用到os,json,random標準庫。
2.存儲用戶文件的讀寫
def test_file(file): ''' 驗證存儲用戶的文件是否存在,不存在生成 :param file: 文件名 :return: 無返回值 ''' if os.path.exists(file): #判斷用戶文件是否存在,不存在生成一個用戶文件 pass else: with open(file,"w+") as f: users = {} json.dump(users,f) def read_file(file): ''' 從用戶文件中讀取用戶列表,以方便進行驗證 :param file: 文件名 :return: 返回讀取的用戶列表 ''' with open(file,'r+') as fr: users = json.load(fr) return users
def write_file(users,file):
'''
把修改後的用戶列表從新寫入進去
:param users: 用戶名列表
:param file: 文件名
:return: 無返回值
'''
with open(file,'w+') as fw:
json.dump(users,fw)
第一段函數是判斷用戶文件是否存在,若是不存在則生成一個用戶文件,若是存在了則不生成,爲何要這樣呢?防止若是用戶文件存在,咱們會使用"w+"打開文件的時候把裏面的文件信息清空;若是不存在的話,咱們就生成用戶文件,而且使用json模塊把一個空的用戶字典寫入文件中,方便下面讀取添加用戶信息。
第二段函數是讀取文件信息,而且以字典形式返回用戶字典,這樣,咱們就能夠在字典中操做用戶信息了,字典的功能咱們都會;另外把讀取的功能封裝到一個函數中,在後面咱們常常會用到,好比用戶惟一性驗證;修改用戶列表的時候都要打開文件。
第三段函數是從新寫入文件中,以"w+"的模式,清空以前的用戶列表,從新寫入進去,當咱們修改用戶信息的時候,都須要從新寫進去。
上面判斷用戶文件是否存在的時候,咱們用到了os.path.exists(),這個是用來判斷文件是否存在的,存在返回True,不然False。
3.隨機驗證碼生成
def random_code(length): ''' 隨機驗證碼生成模塊 :param length: 驗證碼的長度,本身定義多長的驗證碼,開發人員本身定製 :return: 返回生成的隨機驗證碼 ''' codes = [] for i in range(length): num = random.randrange(length) if i == num: code = random.randint(0,9) codes.append(str(code)) else: capital_codes = list(range(65,91)) #小寫字符隨機驗證碼數字 capital_codes.extend(list(range(97,123))) #大寫數字隨機驗證碼數字 tem_code = random.choice(capital_codes) #random.choice()隨機跳跳出一個元素,由於隨機,不知道跳出那個 codes.append(chr(tem_code)) rand_code = "".join(codes) return rand_code
上面代碼是用來生成隨機驗證碼的,length是隨機驗證碼的長度,咱們能夠本身定義長度,驗證碼是由數字,大寫,小寫字母組成,是隨機生成的,咱們知道,大寫字符是從:65-90,小寫字母是從:97-122,咱們先把這兩個範圍的數放到一個列表中,而後使用random.choice()從列表中隨機挑選一個數字,而後進行轉碼,轉換成字母形式, 這裏要注意的是列表功能extend(),這個功能沒有生成新的列表,如list1.extend(list2),是把list2中的元素擴展到list1中,改變list1。
在這裏,咱們也用到了字符串中的拼接str.join(),因爲把列表元素拼接成一個新的字符串。
4.登陸函數
def log_in(users): ''' 登陸模塊 :param user: 用戶名 :param pwd: 密碼 :param users: 用戶列表{"alex":[123456,"unlocked","15111252591"} :return: 無返回值 ''' flag = True while flag: user = input("請輸入您的用戶名:") if user in users.keys(): '''判斷用戶名是否存在,存在以後驗證是否鎖定,若是鎖定告訴要聯繫管理員解鎖''' if users[user][1] == 'locked': print("對不起,您輸入的密碼已經鎖定,請聯繫管理員解鎖!!!") break '''咱們知道,咱們登陸網站都是先驗證用戶名存在不存在,若是存在了,就輸入密碼,可是不會先驗證密碼,而是輸入驗證碼 ,驗證碼輸入以後,驗證驗證碼是否正確,若是驗證碼正確纔會驗證密碼''' pwd = input("請輸入您的密碼:") '''輸入驗證碼,而且先驗證驗證碼是否正確,驗證碼輸入是沒有限制的,一直到你輸入對位置''' while True: random_num = random_code(6) #調用隨機驗證碼生成函數,生成一個6位數的隨機驗證碼 print("驗證碼:",random_num) verification_code = input("請輸入驗證碼:").lower() if verification_code == random_num.lower(): break else: print("驗證碼輸入有誤,請從新輸入:") continue '''驗證碼驗證完畢以後,該驗證密碼,密碼和驗證碼不同,密碼是有輸入次數限制的,密碼只能輸入三次''' try_num = 0 while try_num < 3: if pwd == users[user][0]: print("登陸成功,歡迎來到京東二手市場!") flag = False break else: if try_num != 2: print("您輸入的密碼有誤,你還有%s次鎖定用戶!" %(2-try_num)) pwd = input("請輸入您的密碼:") else: print("您輸入的次數過多,帳戶已經鎖定,請聯繫管理員解鎖!") users[user][1] = "locked" flag = False break try_num += 1 else: print("對不起,您輸入的用戶名沒有註冊!!!") break return users
此函數是登陸功能的核心,用戶信息是以字典形式存儲的{username:[pwd,unlocked,telephone]},首先讓用戶輸入用戶名,並驗證用戶名是否註冊,沒有註冊是不能登陸的;驗證成功以後驗證用戶是否鎖定,鎖定也是不能登陸的(如,咱們去取款機,若是鎖定的話,確定是沒有後續操做的);輸入密碼,密碼輸入以後不會立馬驗證,每一個網站基本上都不會先驗證密碼,而是讓用戶先輸入驗證碼,先進行驗證碼的驗證,驗證碼輸入是沒有次數限制的,驗證碼驗證成功以後,進行密碼驗證,若是密碼輸入成功,則登陸成功;不然會有三次機會,這個是按照銀行系統來的,若是沒有連續輸入三次錯誤,則後續還能在輸入三次,固然沒有銀行那樣時間限制,銀行是隔天才從新回覆三次機會,當天只有三次機會。若是三次都錯誤,則鎖定密碼。鎖定以後就只能解鎖以後才登陸了。
裏面的新嘗試,循環裏面嵌套pwd = input("請輸入您的密碼:"),之前老是一根筋,如何先輸入密碼,輸入以後先驗證驗證碼,後驗證密碼,如今在驗證密碼的時候,從新在循環裏面添加讓用戶輸入密碼的語句便可。
5.註冊模塊
def register(status="unlocked"): ''' 進行註冊,註冊完成以後寫入文件內部,默認都是沒有鎖定的 :return: 無返回值,只是註冊以後從新寫入文件庫 ''' message = ''' --------------------------------------------------------------------------------------------- \033[34;1m 歡迎來到註冊平臺,請按照下面提示進行註冊\033[0m --------------------------------------------------------------------------------------------- ''' flag = True while flag: username = input("請輸入你的用戶名:") flag = uniqueness_verification(username) ''''咱們知道,密碼通常是須要輸入兩次的,兩次一直纔算成功''' while True: pwd1 = input("請輸入您的密碼:") pwd2 = input("請再次輸入密碼:") if pwd1 == pwd2: break else: print("兩次輸入的密碼不一致,請從新輸入:") while True: telephone_num = input("請輸入你的手機號:") if len(telephone_num) == 11: break else: print("對不起,您輸入的手機號碼有誤,請從新輸入!!") '''都輸入完成以後,要存入到文件中''' '''註冊驗證碼都是最後輸入的,輸入只須要正確就能夠,沒有說驗證要在密碼驗證前面''' while True: random_num = random_code(4) print("\033[31m驗證碼:%s\033[0m" %random_num) input_num = input("請輸入驗證碼:") if random_num.lower() == input_num.lower(): #統一轉化爲小寫,這樣就不用在乎用戶輸入什麼直接能夠驗證 break else: print("您輸入的驗證碼有誤,請從新輸入!") filename = "users_file" users = read_file(filename) #讀取以前文件中用戶,進行添加 users[username] = [pwd1,status,telephone_num] #新增註冊 print("恭喜你,註冊成功!") '''註冊成功以後,寫入文件''' write_file(users, filename) #註冊完成以後,從新寫入文件
註冊模塊的主題,首先展現註冊模塊的樣式,接着讓用戶輸入用戶名,並進行惟一性驗證,驗證是否用戶名已經被使用;接着輸入密碼兩次,兩次密碼要一致,接着輸入手機號,手機號碼限定長度是11位;而後輸入驗證碼;註冊成功以後,打開文件,而且把新註冊用戶添加進去,從新寫入用戶文件。
6.惟一性約束
def uniqueness_verification(username): ''' 用戶名惟一性驗證,咱們知道,用戶名是不容許重複的,其實手機號也有惟一性約束,可是咱們知道,手機號老是常常改變, :param username: 用戶名 :return: 無返回值 ''' flag = False filename = "users_file" users = read_file(filename) if username in users.keys(): print("對不起,您輸入的用戶名已經註冊,請從新輸入!") return True else: return flag
上面代碼是實現用戶名惟一性的驗證,咱們知道,註冊的時候要求用戶名是惟一的。
7.解鎖功能
def unlock(filename): ''' 管理員進行解鎖,正常來講只有管理員纔可以解鎖,這樣就只能在添加控制條件了,不過也不要緊,就當聯繫嘗試了 不過應該超級管理員都是在一個文件單獨存放的,只有聯繫超級管理員纔可以解鎖,須要一些驗證,才能登陸超級管理員 這裏由於也沒有太好的辦法來交互了,就用戶本身解鎖,經過手機號,這個仍是不少網站經常使用的找回密碼的方法,只要修改了密碼 就當從新解鎖了,支付寶呀,等在線都是這樣操做的 :param filename: 文件名 :return: ''' '''打開文件,讀取用戶信息''' users = read_file(filename) message = '''\033[36;1m -------------------------------------------------------------------------------------------------- 【1】修改密碼 【2】找回密碼 -------------------------------------------------------------------------------------------------- \033[0m''' print(message) flag = True #循環開啓和關閉的標誌 while flag: function_num = input("請選擇您要操做的功能:") if not function_num in ['1','2']: print("您輸入的功能有誤,請從新輸入!") continue username = input("請輸入用戶名:") #判斷用戶名是否存在 if username in users.keys(): ''''經過手機號進行修改密碼''' while True: telephone_num = input("請輸入您的手機號:") if telephone_num == users[username][2]: '''驗證碼驗證''' while True: rand_num = random_code(4) print("驗證碼:",rand_num) tem_random_code = input("請輸入驗證碼:") if rand_num.lower() == tem_random_code.lower(): break else: print("您輸入的驗證碼有誤,請從新輸入!") break else: print("您輸入的手機號有誤,請從新輸入!") while True: if function_num == '1': pwd1 = input("請輸入你要修改的密碼:") pwd2 = input("請再次輸入您要修改的密碼:") if pwd1 == pwd2: print("密碼修改爲功!") users[username][0] = pwd1 users[username][1] = "unlocked" flag = False break else: print("對不起,您兩次輸入的密碼不一致,請從新輸入!") continue elif function_num == "2": print("\033[30m您的帳戶密碼是:\033[0m",users[username][0]) users[username][1] = 'unlocked' flag = False break else: print("對不起,您輸入的用戶沒有註冊!!!") break return users #解鎖成功以後,返回新的用戶名錶,並重寫寫入到文件中
上面代碼實現解鎖功能,解鎖裏面有兩種狀況,一種是找回密碼,一種是修改密碼;找回密碼咱們是經過手機號來找回的,讓用戶輸入註冊手機號,並輸入驗證碼,經過後臺把原密碼發送至用戶手機;修改密碼也是經過手機號,固然,用戶登陸成功以後,能夠直接修改用戶密碼,這裏沒有實現;密碼修改以後,要從新寫入用戶文件。修改用戶文件信息都要經過讀和寫兩步。
驗證碼的驗證:rand_num.lower() == tem_random_code.lower(),咱們經過把驗證碼和用戶名統一轉化爲大寫或者小寫,實現讓用戶不管輸入什麼,都統一進行轉換比較,提高用戶的體驗度。
8.各主菜單展現模塊
def login_show(): '''登陸展現提醒''' show_message = ''' ----------------------------------------------------------------------------------------------- \033[34m 歡迎來到登陸界面,請按一下提示完成登陸 若是發現帳號鎖定,請進行驗證解鎖,祝你衝浪愉快[0m ----------------------------------------------------------------------------------------------- ''' print(show_message) def register_show(): ''' 註冊展現頁面,進行提醒 :return: ''' show_message = ''' ---------------------------------------------------------------------------------------------------- \033[32;1m 歡迎來到註冊頁面,請按照如下提示完成註冊 \033[0m ---------------------------------------------------------------------------------------------------- ''' print(show_message) def unlock_show(): '''解鎖頁面展現''' show_message = '''\033[33;1m ---------------------------------------------------------------------------------------------------- 歡迎來到解鎖頁面,請按照下面提示進行解鎖 您能夠選擇找回密碼,或者修改密碼 ---------------------------------------------------------------------------------------------------- \033[0m''' print(show_message)
上面的代碼,主要是爲了好看,讓界面看起來順眼,一目瞭然,讓用戶知道本身在哪裏,在幹什麼。
9.程序主體
if __name__ == "__main__": main_show() flag = True while flag: choice_num = input("請選擇您要選擇的操做:") if choice_num == '1': login_show() '''判斷用戶文件是否存在''' filename = 'users_file' test_file(filename) users = read_file(filename) users_message = log_in(users) write_file(users_message,filename) elif choice_num == '2': register_show() register() elif choice_num == '3': unlock_show() '''修改密碼,解除鎖定,咱們知道,如今網絡平臺都是經過手機號本身解鎖的,不過要經過驗證碼充值密碼''' filename = 'users_file' users = unlock(filename) write_file(users,filename) elif choice_num == 'q': break else: print("對不起,找不到您輸入編號的功能,請從新輸入") continue
上面代碼就是把上面全部的函數串聯到一塊兒,主體其實很簡單,就判斷用戶選擇的是什麼功能,具體操做都在以前的代碼塊裏面,只須要調用傳入參數便可。
全部上面函數組合一塊兒:
import os,json,random def main_show(): '''進入主頁展現''' login_message = ''' ------------------------------------------------------------------------------------------------- 您好,歡迎來到京東二貨市場 ------------------------------------------------------------------------------------------------- 【1】登陸 【2】註冊 【3】解鎖 【q】退出 ------------------------------------------------------------------------------------------------- ''' print(login_message) def test_file(file): ''' 驗證存儲用戶的文件是否存在,不存在生成 :param file: 文件名 :return: 無返回值 ''' if os.path.exists(file): pass else: with open(file,"w+") as f: users = {} json.dump(users,f) def read_file(file): ''' 從用戶文件中讀取用戶列表,以方便進行驗證 :param file: 文件名 :return: 返回讀取的用戶列表 ''' with open(file,'r+') as fr: users = json.load(fr) return users def write_file(users,file): ''' 把修改後的用戶列表從新寫入進去 :param users: 用戶名列表 :param file: 文件名 :return: 無返回值 ''' with open(file,'w+') as fw: json.dump(users,fw) def random_code(length): ''' 隨機驗證碼生成模塊 :param length: 驗證碼的長度,本身定義多長的驗證碼,開發人員本身定製 :return: 返回生成的隨機驗證碼 ''' codes = [] for i in range(length): num = random.randrange(length) if i == num: code = random.randint(0,9) codes.append(str(code)) else: capital_codes = list(range(65,91)) #小寫字符隨機驗證碼數字 capital_codes.extend(list(range(97,123))) #大寫數字隨機驗證碼數字 tem_code = random.choice(capital_codes) #random.choice()隨機跳跳出一個元素,由於隨機,不知道跳出那個 codes.append(chr(tem_code)) rand_code = "".join(codes) return rand_code def log_in(users): ''' 登陸模塊 :param user: 用戶名 :param pwd: 密碼 :param users: 用戶列表{"alex":[123456,"unlocked","15111252591"} :return: 無返回值 ''' flag = True while flag: user = input("請輸入您的用戶名:") if user in users.keys(): '''判斷用戶名是否存在,存在以後驗證是否鎖定,若是鎖定告訴要聯繫管理員解鎖''' if users[user][1] == 'locked': print("對不起,您輸入的密碼已經鎖定,請聯繫管理員解鎖!!!") break '''咱們知道,咱們登陸網站都是先驗證用戶名存在不存在,若是存在了,就輸入密碼,可是不會先驗證密碼,而是輸入驗證碼 ,驗證碼輸入以後,驗證驗證碼是否正確,若是驗證碼正確纔會驗證密碼''' pwd = input("請輸入您的密碼:") '''輸入驗證碼,而且先驗證驗證碼是否正確,驗證碼輸入是沒有限制的,一直到你輸入對位置''' while True: random_num = random_code(6) #調用隨機驗證碼生成函數,生成一個6位數的隨機驗證碼 print("驗證碼:",random_num) verification_code = input("請輸入驗證碼:").lower() if verification_code == random_num.lower(): break else: print("驗證碼輸入有誤,請從新輸入:") continue '''驗證碼驗證完畢以後,該驗證密碼,密碼和驗證碼不同,密碼是有輸入次數限制的,密碼只能輸入三次''' try_num = 0 while try_num < 3: if pwd == users[user][0]: print("登陸成功,歡迎來到京東二手市場!") flag = False break else: if try_num != 2: print("您輸入的密碼有誤,你還有%s次鎖定用戶!" %(2-try_num)) pwd = input("請輸入您的密碼:") else: print("您輸入的次數過多,帳戶已經鎖定,請聯繫管理員解鎖!") users[user][1] = "locked" flag = False break try_num += 1 else: print("對不起,您輸入的用戶名沒有註冊!!!") break return users def register(status="unlocked"): ''' 進行註冊,註冊完成以後寫入文件內部,默認都是沒有鎖定的 :return: 無返回值,只是註冊以後從新寫入文件庫 ''' message = ''' --------------------------------------------------------------------------------------------- \033[34;1m 歡迎來到註冊平臺,請按照下面提示進行註冊\033[0m --------------------------------------------------------------------------------------------- ''' flag = True while flag: username = input("請輸入你的用戶名:") flag = uniqueness_verification(username) ''''咱們知道,密碼通常是須要輸入兩次的,兩次一直纔算成功''' while True: pwd1 = input("請輸入您的密碼:") pwd2 = input("請再次輸入密碼:") if pwd1 == pwd2: break else: print("兩次輸入的密碼不一致,請從新輸入:") while True: telephone_num = input("請輸入你的手機號:") if len(telephone_num) == 11: break else: print("對不起,您輸入的手機號碼有誤,請從新輸入!!") '''都輸入完成以後,要存入到文件中''' '''註冊驗證碼都是最後輸入的,輸入只須要正確就能夠,沒有說驗證要在密碼驗證前面''' while True: random_num = random_code(4) print("\033[31m驗證碼:%s\033[0m" %random_num) input_num = input("請輸入驗證碼:") if random_num.lower() == input_num.lower(): #統一轉化爲小寫,這樣就不用在乎用戶輸入什麼直接能夠驗證 break else: print("您輸入的驗證碼有誤,請從新輸入!") filename = "users_file" users = read_file(filename) #讀取以前文件中用戶,進行添加 users[username] = [pwd1,status,telephone_num] #新增註冊 print("恭喜你,註冊成功!") '''註冊成功以後,寫入文件''' write_file(users, filename) #註冊完成以後,從新寫入文件 def uniqueness_verification(username): ''' 用戶名惟一性驗證,咱們知道,用戶名是不容許重複的,其實手機號也有惟一性約束,可是咱們知道,手機號老是常常改變, :param username: 用戶名 :return: 無返回值 ''' flag = False filename = "users_file" users = read_file(filename) if username in users.keys(): print("對不起,您輸入的用戶名已經註冊,請從新輸入!") return True else: return flag def unlock(filename): ''' 管理員進行解鎖,正常來講只有管理員纔可以解鎖,這樣就只能在添加控制條件了,不過也不要緊,就當聯繫嘗試了 不過應該超級管理員都是在一個文件單獨存放的,只有聯繫超級管理員纔可以解鎖,須要一些驗證,才能登陸超級管理員 這裏由於也沒有太好的辦法來交互了,就用戶本身解鎖,經過手機號,這個仍是不少網站經常使用的找回密碼的方法,只要修改了密碼 就當從新解鎖了,支付寶呀,等在線都是這樣操做的 :param filename: 文件名 :return: ''' '''打開文件,讀取用戶信息''' users = read_file(filename) message = '''\033[36;1m -------------------------------------------------------------------------------------------------- 【1】修改密碼 【2】找回密碼 -------------------------------------------------------------------------------------------------- \033[0m''' print(message) flag = True #循環開啓和關閉的標誌 while flag: function_num = input("請選擇您要操做的功能:") if not function_num in ['1','2']: print("您輸入的功能有誤,請從新輸入!") continue username = input("請輸入用戶名:") #判斷用戶名是否存在 if username in users.keys(): ''''經過手機號進行修改密碼''' while True: telephone_num = input("請輸入您的手機號:") if telephone_num == users[username][2]: '''驗證碼驗證''' while True: rand_num = random_code(4) print("驗證碼:",rand_num) tem_random_code = input("請輸入驗證碼:") if rand_num.lower() == tem_random_code.lower(): break else: print("您輸入的驗證碼有誤,請從新輸入!") break else: print("您輸入的手機號有誤,請從新輸入!") while True: if function_num == '1': pwd1 = input("請輸入你要修改的密碼:") pwd2 = input("請再次輸入您要修改的密碼:") if pwd1 == pwd2: print("密碼修改爲功!") users[username][0] = pwd1 users[username][1] = "unlocked" flag = False break else: print("對不起,您兩次輸入的密碼不一致,請從新輸入!") continue elif function_num == "2": print("\033[30m您的帳戶密碼是:\033[0m",users[username][0]) users[username][1] = 'unlocked' flag = False break else: print("對不起,您輸入的用戶沒有註冊!!!") break return users #解鎖成功以後,返回新的用戶名錶,並重寫寫入到文件中 def login_show(): '''登陸展現提醒''' show_message = ''' ----------------------------------------------------------------------------------------------- \033[34m 歡迎來到登陸界面,請按一下提示完成登陸 若是發現帳號鎖定,請進行驗證解鎖,祝你衝浪愉快[0m ----------------------------------------------------------------------------------------------- ''' print(show_message) def register_show(): ''' 註冊展現頁面,進行提醒 :return: ''' show_message = ''' ---------------------------------------------------------------------------------------------------- \033[32;1m 歡迎來到註冊頁面,請按照如下提示完成註冊 \033[0m ---------------------------------------------------------------------------------------------------- ''' print(show_message) def unlock_show(): '''解鎖頁面展現''' show_message = '''\033[33;1m ---------------------------------------------------------------------------------------------------- 歡迎來到解鎖頁面,請按照下面提示進行解鎖 您能夠選擇找回密碼,或者修改密碼 ---------------------------------------------------------------------------------------------------- \033[0m''' print(show_message) if __name__ == "__main__": main_show() flag = True while flag: choice_num = input("請選擇您要選擇的操做:") if choice_num == '1': login_show() '''判斷用戶文件是否存在''' filename = 'users_file' test_file(filename) users = read_file(filename) users_message = log_in(users) write_file(users_message,filename) elif choice_num == '2': register_show() register() elif choice_num == '3': unlock_show() '''修改密碼,解除鎖定,咱們知道,如今網絡平臺都是經過手機號本身解鎖的,不過要經過驗證碼充值密碼''' filename = 'users_file' users = unlock(filename) write_file(users,filename) elif choice_num == 'q': break else: print("對不起,找不到您輸入編號的功能,請從新輸入") continue
4、代碼功能展現:
1.主頁面
-------------------------------------------------------------------------------------------------
您好,歡迎來到京東二貨市場
-------------------------------------------------------------------------------------------------
【1】登陸 【2】註冊 【3】解鎖 【q】退出
-------------------------------------------------------------------------------------------------
請選擇您要選擇的操做:
2.登陸
請選擇您要選擇的操做:1
-----------------------------------------------------------------------------------------------
歡迎來到登陸界面,請按一下提示完成登陸
若是發現帳號鎖定,請進行驗證解鎖,祝你衝浪愉快[0m
-----------------------------------------------------------------------------------------------
請輸入您的用戶名:alexsb
對不起,您輸入的用戶名沒有註冊!!!
請選擇您要選擇的操做:1
-----------------------------------------------------------------------------------------------
歡迎來到登陸界面,請按一下提示完成登陸
若是發現帳號鎖定,請進行驗證解鎖,祝你衝浪愉快[0m
-----------------------------------------------------------------------------------------------
請輸入您的用戶名:耿長學
請輸入您的密碼:456789
驗證碼: 3q4QZJ
請輸入驗證碼:3q4qzs
驗證碼輸入有誤,請從新輸入:
驗證碼: YlhBir
請輸入驗證碼:ylhbir
您輸入的密碼有誤,你還有2次鎖定用戶!
請輸入您的密碼:456789
您輸入的密碼有誤,你還有1次鎖定用戶!
請輸入您的密碼:456789
您輸入的次數過多,帳戶已經鎖定,請聯繫管理員解鎖!
請選擇您要選擇的操做:耿長學
對不起,找不到您輸入編號的功能,請從新輸入
請選擇您要選擇的操做:1
-----------------------------------------------------------------------------------------------
歡迎來到登陸界面,請按一下提示完成登陸
若是發現帳號鎖定,請進行驗證解鎖,祝你衝浪愉快[0m
-----------------------------------------------------------------------------------------------
請輸入您的用戶名:耿長學
對不起,您輸入的密碼已經鎖定,請聯繫管理員解鎖!!!
2.註冊
-------------------------------------------------------------------------------------------------
您好,歡迎來到京東二貨市場
-------------------------------------------------------------------------------------------------
【1】登陸 【2】註冊 【3】解鎖 【q】退出
-------------------------------------------------------------------------------------------------
請選擇您要選擇的操做:2
----------------------------------------------------------------------------------------------------
歡迎來到註冊頁面,請按照如下提示完成註冊
----------------------------------------------------------------------------------------------------
請輸入你的用戶名:耿長學
對不起,您輸入的用戶名已經註冊,請從新輸入!
請輸入你的用戶名:alexsb
請輸入您的密碼:123456
請再次輸入密碼:123456
請輸入你的手機號:151116969251
對不起,您輸入的手機號碼有誤,請從新輸入!!
請輸入你的手機號:15111696938
驗證碼:TC2A
請輸入驗證碼:txas
您輸入的驗證碼有誤,請從新輸入!
驗證碼:7wff
請輸入驗證碼:7wff
恭喜你,註冊成功!
上面,註冊了的用戶是不能從新註冊的,手機號有驗證,密碼有驗證,而且默認註冊都是未鎖定的,這個函數裏面有默認,用戶是看不到的。
3.解鎖
(1)修改密碼
-------------------------------------------------------------------------------------------------
您好,歡迎來到京東二貨市場
-------------------------------------------------------------------------------------------------
【1】登陸 【2】註冊 【3】解鎖 【q】退出
-------------------------------------------------------------------------------------------------
請選擇您要選擇的操做:3
----------------------------------------------------------------------------------------------------
歡迎來到解鎖頁面,請按照下面提示進行解鎖
您能夠選擇找回密碼,或者修改密碼
----------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
【1】修改密碼 【2】找回密碼
--------------------------------------------------------------------------------------------------
請選擇您要操做的功能:1
請輸入用戶名:耿長學
請輸入您的手機號:15111252591
驗證碼: oRxW
請輸入驗證碼:orxw
請輸入你要修改的密碼:123456
請再次輸入您要修改的密碼:123456
密碼修改爲功!
(2)找回密碼
-------------------------------------------------------------------------------------------------
您好,歡迎來到京東二貨市場
-------------------------------------------------------------------------------------------------
【1】登陸 【2】註冊 【3】解鎖 【q】退出
-------------------------------------------------------------------------------------------------
請選擇您要選擇的操做:3
----------------------------------------------------------------------------------------------------
歡迎來到解鎖頁面,請按照下面提示進行解鎖
您能夠選擇找回密碼,或者修改密碼
----------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
【1】修改密碼 【2】找回密碼
--------------------------------------------------------------------------------------------------
請選擇您要操做的功能:2
請輸入用戶名:user
對不起,您輸入的用戶沒有註冊!!!
請選擇您要選擇的操做:3
----------------------------------------------------------------------------------------------------
歡迎來到解鎖頁面,請按照下面提示進行解鎖
您能夠選擇找回密碼,或者修改密碼
----------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
【1】修改密碼 【2】找回密碼
--------------------------------------------------------------------------------------------------
請選擇您要操做的功能:2
請輸入用戶名:耿長學
請輸入您的手機號:15111252591
驗證碼: Uess
請輸入驗證碼:uess
您的帳戶密碼是: 123456
q.退出
知識總結:
一、os模塊的使用,os.path.exists(file),學的知識要常常用,要常常寫代碼,只有經過不斷的寫代碼,纔會嘗試用學到的知識,想方法,解決問題;
二、驗證的前後順序學習,其實先驗證誰都是能夠的,就看循環放在哪裏,誰先進行循環,次序問題,這個要根據具體實際要求;
三、隨機驗證碼random.choice()使用,列表extend()使用,這些平時都不怎麼經常使用,關鍵的時候會發揮很大的做用;
四、json文件的讀取和寫入,這個模塊後續我還會單獨測試,要本身在寫代碼的過程當中發現問題,而後去測試,我想測試是否能夠load()不是dump()進去的文件,並熟練使用方法,以前我一直覺得dumps(mess)直接能夠寫到文件中,原來還須要f.write()進行寫入,真他媽的天真,固然經過本身代碼積累,而不是不練習,本身知識在進步中。