码迷,mamicode.com
首页 > 其他好文 > 详细

第二章练习题

时间:2018-08-29 21:24:57      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:info   河北   分享   lag   商品   添加   河北省   tin   dig   

                                            第二章练习题

技术分享图片

 

  • 购物车程序

 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("退出程序")

     

 

第二章练习题

标签:info   河北   分享   lag   商品   添加   河北省   tin   dig   

原文地址:https://www.cnblogs.com/wqq0723/p/9546143.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!