1. 程式人生 > >第二章練習題

第二章練習題

購物 整數 數字 ping nbsp stay ges 允許 return

第二章練習題

技術分享圖片

  • 購物車程序

 1 #功能要求:
 2 #啟動程序後,讓用戶輸入工資,然後打印商品列表
 3 #允許用戶根據商品編號購買商品
 4 #用戶選擇商品後,檢測余額是否夠,夠就直接扣款,不夠就提醒
 5 #用戶可一直購買商品,可隨時退出,退出時,打印已購買商品和余額
 6 
 7 products = [
 8     {"name":Iphone,"price":6888},
 9     {"name":MacPro,"price":14800},
10     {"name":
小米,"price":2499}, 11 {"name":Coffee,"price":31}, 12 {"name":Book,"price":80}, 13 {"name":NikeShoes,"price":799} 14 ] 15 wages = int(input(請輸入您的工資:)) 16 shopping_car = [] # 創建購物車 17 exit_flag = False # 標誌位,控制while循環 18 while not exit_flag: 19 print(--------商品列表--------
) 20 for index, i in enumerate(products): 21 print(index, i) #打印商品列表 22 choice = (input(請輸入您要購買的商品編號:)) 23 if choice.isdigit(): #isdigit 用來判斷像不像阿拉伯(整數) 24 choice = int(choice) # str轉換為int 25 if 0 <= choice < len(products): #
判斷輸入的數字是否超過列表的長度 26 if wages >= products[choice].get(price): # products[choice]表示輸入的編碼在列表中對應的值 27 wages -= products[choice].get(price) 28 print(您的余額為:, wages) 29 shopping_car.append(products[choice]) # 將選擇的商品加入購物車 30 print("已將您要購買的商品:%s 添加進購物車" % (products[choice])) 31 else: 32 print(您的余額不足!) 33 else: 34 print(您要購買的商品不存在!) 35 elif choice == "q": 36 print(-----您已購買的商品-----) 37 for index, k in enumerate(shopping_car): 38 print(index, k) 39 print(賬戶余額為:, wages) 40 exit_flag = True #停止循環

  • 三級菜單

      1 #功能要求(列表、菜單):
      2 #現有省、市、縣三級結構,要求程序啟動後,允許用戶可依次選擇進入各子菜單
      3 #可從任意一級菜單往回上一級
      4 #可從任意一級菜單退出程序
      5 menu = {
      6     河北省:{
      7         石家莊市:{
      8             元氏縣:{
      9                 蘇陽鄉:{ },
     10                 趙同鄉:{ }
     11             },
     12             贊皇縣:{
     13                 南清河鄉: { },
     14                 西陽澤鄉: { }
     15             }
     16         },
     17         衡水市: {
     18             饒陽縣:{
     19                 留楚鄉: { },
     20                 五公鎮: { }
     21             },
     22             阜城縣:{
     23                 建橋鄉: { },
     24                 古城鎮: { }
     25             }
     26        }
     27     },
     28     山西省: {
     29         太原市: {
     30              清徐縣: {
     31                  留楚鄉: { },
     32                  五公鎮: { }
     33              },
     34              晉源區: {
     35                  晉陽湖: { },
     36                  晉陽古城: { }
     37              }
     38             },
     39         大同市: {
     40              大同縣: {
     41                  周士莊: { },
     42                  吉家莊: { }
     43              },
     44              左雲縣: {
     45                  保安堡: { }
     46              }
     47          }
     48     }
     49 }
     50 stay_flag = False          # 標誌位,控制while循環    當用戶輸入某個字符時停留在本級菜單上
     51 return_flag = False          # 標誌位,控制while循環    當用戶輸入某個字符時返回上一級菜單上
     52 flag_list = [s,r]
     53 while not return_flag:
     54     print("您可以選擇的省份:")
     55     print("*******************************")
     56     for k in menu:
     57         print(k)
     58     print("*******************************")
     59     choicename = input("請輸入您所在的省份(s跳出程序;r返回上一級菜單):").strip()  #strip 去掉多余的空格、換行、Tab鍵
     60     print("*******************************")
     61 
     62     if choicename in menu:
     63         while not stay_flag and not return_flag:
     64             for k1 in menu[choicename]:
     65                 print(k1)
     66             print("*******************************")
     67             choicename1 = input("請輸入您所在的市區(s跳出程序;b返回上一級菜單):").strip()
     68             print("*******************************")
     69             if choicename1 == s:  # 當輸入的是s時,跳出程序
     70                 exit()
     71             elif choicename1 == r:  # 當輸入r時,將return_flag標誌置為True,本循環層不開始,返回上一層
     72                 return_flag = True
     73 
     74             if choicename1 in menu[choicename]:
     75                 while not stay_flag and not return_flag:
     76                     for k2 in menu[choicename][choicename1]:
     77                         print(k2)
     78                     print("*******************************")
     79                     choicename2 = input("請輸入您所在的縣(s跳出程序;r返回上一級菜單):").strip()
     80                     print("*******************************")
     81                     if choicename2 == s:
     82                         exit()
     83                     elif choicename2 == r:
     84                         return_flag = True
     85 
     86                     if choicename2 in menu[choicename][choicename1]:
     87                         while not stay_flag and not return_flag:
     88                             for k3 in menu[choicename][choicename1][choicename2]:
     89                                 print(k3)
     90                             print("*******************************")
     91                             choicename3 = input("請輸入s或r(s跳出程序;r返回上一級菜單):").strip()
     92                             print("*******************************")
     93                             if choicename3 == s:
     94                                 exit()
     95                             elif choicename3 == r:
     96                                 return_flag = True
     97                             else:
     98                                 print("這是最後一級")
     99                         else:                               # 給return_flag標誌位重新賦值為False,確保第三級菜單可以正常循環
    100                             return_flag = False
    101                     elif choicename2 in flag_list:          # 避免輸入s或b,程序停在當前菜單層或返回上級菜單層時提示錯誤,請重新輸入。
    102                         pass
    103                     else:
    104                         print("縣名輸入錯誤,請重新輸入")
    105 
    106                 else:                                       #給return_flag標誌位重新賦值為False,確保第二級菜單可以正常循環
    107                     return_flag = False
    108             elif choicename1 in flag_list:
    109                 pass
    110             else:
    111                 print("市名輸入錯誤,請重新輸入")
    112 
    113         else:                                                # 給return_flag標誌位重新賦值為False,確保第一級菜單可以正常循環
    114             return_flag = False
    115     elif choicename in flag_list:
    116         pass
    117     else:
    118         print("省名輸入錯誤,請重新輸入!")

  • 三級菜單(簡化版)

     1 menu = {
     2     河北省:{
     3         石家莊市:{
     4             元氏縣:{
     5                 蘇陽鄉:{ },
     6                 趙同鄉:{ }
     7             },
     8             贊皇縣:{
     9                 南清河鄉: { },
    10                 西陽澤鄉: { }
    11             }
    12         },
    13         衡水市: {
    14             饒陽縣:{
    15                 留楚鄉: { },
    16                 五公鎮: { }
    17             },
    18             阜城縣:{
    19                 建橋鄉: { },
    20                 古城鎮: { }
    21             }
    22        }
    23     },
    24     山西省: {
    25         太原市: {
    26              清徐縣: {
    27                  留楚鄉: { },
    28                  五公鎮: { }
    29              },
    30              晉源區: {
    31                  晉陽湖: { },
    32                  晉陽古城: { }
    33              }
    34             },
    35         大同市: {
    36              大同縣: {
    37                  周士莊: { },
    38                  吉家莊: { }
    39              },
    40              左雲縣: {
    41                  保安堡: { }
    42              }
    43          }
    44     }
    45 }
    46 current_layer,layers = (menu,[])
    47 while True:
    48     for keys in current_layer:print(keys)         #合成一層展示
    49     choice = input(">>>:").strip()               #strip  去除多余字符
    50     if not choice:continue
    51     if choice in current_layer:
    52         layers.append(current_layer);current_layer = current_layer[choice]
    53     elif choice == r: #r代表返回上一級菜單;
    54         if len(layers) != 0:
    55             current_layer = layers.pop()
    56         else:
    57             print("回到第一層")
    58     elif choice == s:#s代表退出程序
    59         exit("退出程序")

第二章練習題