作業:
作業1:用戶登錄
1)程序說明:
a.用戶輸入密碼驗證成功然后打印歡迎信息
b.如果密碼錯誤,用戶登錄失敗,提示用戶,密碼錯誤
c.用戶輸入密碼錯誤3次,則用戶鎖定
d.當用戶多次輸入不存在的用戶時,提示錯誤信息,並讓用戶等待10s之后再次輸入
賬戶信息保存在user.txt中,例子:dean,dean123,0 這三個值分別表示的含義:第一位是:username,第二位是:password,第三位表示用戶的狀態,0表示正常,1表示鎖定
2)流程圖如下:
3)程序代碼:
1 #AUTHOR:FAN 2 import time 3 #定義一個用戶字典 4 user_dict={} 5 #定義一個用戶列表 6 user_list=[] 7 8 f=open("user.txt",'r') 9 #用for循環獲取文件中每行的內容,並寫入到字典中,value_interm[0]表示username,value_interm[1]表示password,value_interm[2]表示 10 #賬戶的鎖定信息:0表示正常,1表示鎖定 11 for line in f.readlines(): 12 useriterm = line.strip() 13 value_interm = useriterm.split(',') 14 value_username = value_interm[0] 15 value_password = value_interm[1] 16 value_lock = value_interm[2] 17 user_dict[value_username]={ 18 "name":value_username, 19 "password":value_password, 20 "lock":value_lock 21 } 22 f.close() 23 #print(user_dict) 24 #定義個count_num用戶計算用戶輸入錯誤用戶的次數 25 count_num = 0 26 #用於跳出多層循環 27 flag = True 28 while flag: 29 if count_num == 3: 30 print("dute to input non-existent user ,you need to wait 10s") 31 time.sleep(10) 32 # 獲取用戶輸入的用戶名 33 user_name = input("please input your username:") 34 if user_name in user_dict.keys(): 35 #print(type(user_dict[user_name]["lock"])) 36 #判斷用戶是否被鎖定 37 if int(user_dict[user_name]["lock"]) == 0: 38 for i in range(3): 39 password = input("please input you password:") 40 #判斷密碼是否正確 41 if password == user_dict[user_name]["password"]: 42 print("welcome to login my system!") 43 flag=False 44 break 45 else: 46 print("password is error") 47 else: 48 #用戶輸入密碼錯誤三次后被鎖定 49 user_dict[user_name]["lock"]="1" 50 f = open("user.txt","w+") 51 #將字典裝換成列表,將改變的信息寫入到文件中 52 for value in user_dict.values(): 53 user_list =[value["name"],value["password"],value["lock"]] 54 user_list =",".join(user_list) 55 f.write(user_list+"\n") 56 print("you input wrong password too many,the user is locked") 57 break 58 else: 59 print("user is locked") 60 else: 61 print("user is not exist") 62 count_num+=1
作業2:三級菜單
1)程序說明:
a.用戶運行程序后,打印第一級菜單
b.用戶輸入相應的編號進入下一級菜單,當編號錯誤的時候會提示用戶輸入錯誤,並讓用戶重新輸入
c.用戶在每一級的時候,都能通過輸入q退出程序,並能通過輸入up返回到上級菜單,返回到上級目錄時要將上級目錄進行打印
d.用戶到最后一級的時候提示用戶已經到最后一級目錄,可以直接退出程序或返回上級目錄
2)流程圖如下:
3)程序代碼:
1 #AUTHOR:FAN 2 #定義一個菜單字典 3 menu_dict={ 4 "河南省":{ 5 "焦作市":{ 6 "修武縣":{"AA","BB","CC"}, 7 "武陟縣":{"DD","EE","FF"}, 8 "博愛縣":{"GG","HH","II"} 9 }, 10 "新鄉市":{ 11 "輝縣":{"AA","BB","CC"}, 12 "封丘縣":{"DD","EE","FF"}, 13 "延津縣":{"GG","HH","II"} 14 } 15 }, 16 "河北省":{ 17 "邢台":{ 18 "寧晉縣":{"AA","BB","CC"}, 19 "內丘縣":{"DD","EE","FF"}, 20 "邢台縣":{"GG","HH","II"} 21 }, 22 "唐山":{ 23 "樂亭縣":{"AA","BB","CC"}, 24 "唐海縣":{"DD","EE","FF"}, 25 "玉田縣":{"GG","HH","II"} 26 } 27 } 28 } 29 #用戶退出多級菜單用flag 30 flag =True 31 while flag: 32 #用於記錄一級菜單key的個數 33 count1 = 0 34 #打印一級菜單 35 for index,key in enumerate(menu_dict.keys()): 36 count1+=1 37 print(index,key) 38 user_choice = input("please input your choice:") 39 #判斷用戶輸入的值是否為全數字 40 if user_choice.isdigit() is True: 41 user_choice = int(user_choice) 42 #判斷用戶輸入的值是否大於列表的最大值 43 if user_choice < count1: 44 #將字典轉換成列表,menu_dict.keys()默認不是列表 45 menu_list = list(menu_dict.keys()) 46 else: 47 print("you need input right num") 48 continue 49 elif user_choice == "q": 50 flag= False 51 break 52 else: 53 print("please input a num") 54 continue 55 while flag: 56 count2= 1 57 for index,key in enumerate(menu_dict[menu_list[user_choice]].keys()): 58 count2+=1 59 print (index,key) 60 user_choice2 = input("please input your choice(q:退出程序,up上一級):") 61 if user_choice2.isdigit() is True: 62 user_choice2 = int(user_choice2) 63 if user_choice2 < count2: 64 menu_list2 = list(menu_dict[menu_list[user_choice]].keys()) 65 else: 66 print("you need input right num") 67 continue 68 elif user_choice2 == "q": 69 flag=False 70 break 71 elif user_choice2 =="up": 72 break 73 else: 74 print("please input a num") 75 continue 76 while flag: 77 count3=0 78 for index,key in enumerate(menu_dict[menu_list[user_choice]][menu_list2[user_choice2]].keys()): 79 print(index,key) 80 count3+=1 81 user_choice3 =input("please input your choice(q:退出程序,up上一級):") 82 if user_choice3.isdigit() is True: 83 user_choice3=int(user_choice3) 84 if user_choice3 < count3: 85 menu_list3 = list(menu_dict[menu_list[user_choice]][menu_list2[user_choice2]]) 86 else: 87 print("you need input right num") 88 continue 89 elif user_choice3 == "up": 90 break 91 elif user_choice3 =="q": 92 flag =False 93 break 94 else: 95 print("please input a num") 96 continue 97 while flag: 98 for index,key in enumerate(menu_dict[menu_list[user_choice]][menu_list2[user_choice2]][menu_list3[user_choice3]]): 99 print (index,key) 100 #提示用戶已經到最后一級目錄,可以退出或返回上級目錄 101 q_or_up = input("This is last level,you want to q(退出程序) or up(上一級):") 102 if q_or_up == "q": 103 flag = False 104 break 105 elif q_or_up == "up": 106 break 107 else: 108 continue