python成長之路-----day1-----作業(登錄程序和三級菜單)


作業:

作業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

 

 

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM