zoukankan      html  css  js  c++  java
  • 第二章练习题

                                                第二章练习题

    • 购物车程序

     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("退出程序")
  • 相关阅读:
    BZOJ3674 可持久化并查集加强版
    BZOJ2588 Spoj 10628. Count on a tree
    BZOJ1300 [LLH邀请赛]大数计算器
    BZOJ3261 最大异或和
    BZOJ1605 [Usaco2008 Open]Crisis on the Farm 牧场危机
    BZOJ3524 [Poi2014]Couriers
    BZOJ2127 happiness
    JZOJ__Day 7:【普及模拟】蚂蚁
    JZOJ__Day 6:【普及模拟】神奇的项链(fett)
    JZOJ__Day 6:【普及模拟】团队背包(team)
  • 原文地址:https://www.cnblogs.com/wqq0723/p/9546143.html
Copyright © 2011-2022 走看看