• 练习-购物车功能实现


      1 #第二天作业:编辑一个购物车
      2 #xxx  2016/4/19
      3 #模块一:选择商品,添加购物车
      4 #模块二:查看购物车
      5 #模块三:购买模块,钱够不够
      6 #模块四:返回模块,返回上一级
      7 #模块五:退出模块
      8 #描述:本次作业运用了上次作业没运用到的字典,和列表与字典的嵌套;运用了while - flag 来
      9 #做循环返回,另外 虽说是2级目录,不过只拿了一类商品做练习,这里没做库存计算
     10 
     11 name = "wellcome,let's go"
     12 name_left = "*"
     13 name_right = "*"
     14 print(50*"*")
     15 print(name_left.ljust(0),name.center(50),name_right.rjust(0))
     16 print(50*"*")
     17 
     18 kind_list = [
     19     {"kid": "1", "kname": "图书音像"},
     20     {"kid": "2", "kname": "电子产品"},
     21     {"kid": "3", "kname": "家电家具"},
     22 ]
     23 
     24 book_list = [
     25     {"bid": "1", "book":"Java入门", "bprice": "899"},
     26     {"bid": "2", "book":"Python入门", "bprice": "234"},
     27     {"bid": "3", "book":"C入门", "bprice": "145"},
     28 ]
     29 
     30 technology_list = [
     31     {"tid": "1", "technology":"笔记本", "tprice": "4980"},
     32     {"tid": "2", "technology":"手机", "tprice": "3782"},
     33     {"tid": "3", "technology":"硬盘", "tprice": "1234"},
     34 ]
     35 
     36 house_list = [
     37     {"hid": "1", "house":"电饭煲", "hprice": "567"},
     38     {"hid": "2", "house":"电磁炉", "hprice": "243"},
     39     {"hid": "3", "house":"沙发", "hprice": "1486"},
     40 ]
     41 user_asset = 10000    #用户资产
     42 gouwuche = []         #购物车表示一个空列表
     43 
     44 kind_flag = False
     45 while not kind_flag:      #外循环
     46     for k in kind_list:   #打印商品种类列表
     47         print(k.get("kid"), "	", k.get("kname"))    #字典获取输出编号,以及商品种类
     48     print("你的账号存款余额:", user_asset, )           #显示余额
     49     kind_num = int(input("请输入你需要购买商品类别id:"))     #引导用户输入
     50     print("*" * 50)
     51 
     52     if (kind_num == 1):
     53         book_flag = False
     54         while not book_flag:     #内循环
     55             for b in book_list:
     56                 print(b.get("bid"), "	", b.get("book"), "	", b.get("bprice"))
     57             book_choice = input("[quit(按q退出),check(按c检查购物车),pay(按p付款),back(按b返回上级)]
    请输入你需要购买的书本id:")
     58             print("*"*50)
     59             if book_choice.isdigit():            #模块一,加入购物车
     60                 book_choice = int(book_choice)
     61                 if book_choice <= len(book_list) and book_choice > 0:    #如果选择物品编号在有效范围内,则添加到购物车
     62                    gouwuche.append(book_list[book_choice-1])   #将选中物品加入列表,由于列表下标是从0开始的,而这里选择编号是从1开始,所以减1
     63                    print("你已选中了如下商品:
    ",gouwuche)      #这里以列表方式显示了,可以优化
     64                 else:
     65                    print("输入不合法,请重新输入")        #如果输入编号不在有效范围,重新输入
     66                 print("*"*50)
     67 
     68             elif book_choice == "c":         #模块二:检查购物车
     69                 total = 0
     70                 print("你已选中了如下商品:
    ","*"*50)
     71                 for b in gouwuche:
     72                     print(b.get("book"),)          #检查结果,只显示物品名字(当然可以优化+价格)
     73                     total += int(b.get("bprice"))  #计算购买总额
     74                 print("*"*50)
     75 
     76             elif book_choice == "p":          #模块三:购买
     77                 total = 0
     78                 print("你已选中了如下商品:
    ", "*" * 50)
     79                 for b in gouwuche:
     80                    print(b.get("book"),"	",b.get("bprice") )   #显示购物车清单,物品名+价格
     81                    total += int(b.get("bprice"))
     82                    print("*" * 50)
     83                 print("你当前花费总额为:",total)
     84                 pay = input("你确定付款吗?y/n")
     85                 if pay == "y":
     86                    left = user_asset - total        #计算余额
     87                    if left >= 0:
     88                       pay_list = gouwuche
     89                       gouwuche = []           #清空购物车
     90                       user_asset = left       #变化后的资产,用于下次购买使用
     91                       print("付款成功")
     92                    else :
     93                       for p in gouwuche:      #如果钱不够,在购物车上删除部分商品
     94                          print(p.get("bid"),p.get("book"),p.get("bprice"))    #列出购物清单
     95                       dele_pay = input("请删除部分商品id:")         #选择删除商品编号
     96                       gouwuche.pop(dele_pay -1)
     97 
     98                 print("*" * 50)
     99 
    100             elif book_choice == "b":          #如果输入b,退出循环,返回上级
    101                 book_flag = True              #模块四:返回上级
    102 
    103             elif book_choice == "q":          #如果输入q,退出系统
    104                if gouwuche :                                      #模块五:退出系统
    105                    print("购物车里还有东西,请问要退出吗(y/n)")
    106                    quit_xitong = input("请选择:")
    107                    if quit_xitong == "y":
    108                        break                 #直接退出
    109                    else:
    110                        continue      #退出当前循环
    111 
    112 
    113     elif (kind_num == 2):
    114         for t in technology_list:
    115             print(t.get("tid"), "	", t.get("technology"), "	", t.get("tprice"))
    116         technology = input("请输入你需要购买的电子产品名:")
    117 
    118     elif (kind_num == 3):
    119         for h in house_list:
    120             print(h.get("hid"), "	", h.get("house"), "	", h.get("hprice"))
    121         house = input("请输入你需要购买的家电家具:")
    122 
    123     else:
    124         print("输入不合法,是否重新输入(y/n)")
    125         acc = input("请选择:")
    126         if acc == "y":
    127             continue
    128         else:
    129             kind_flag = True



    执行结果:

    **************************************************
    * wellcome,let's go *
    **************************************************
    1 图书音像
    2 电子产品
    3 家电家具
    你的账号存款余额: 10000
    请输入你需要购买商品类别id:1
    **************************************************
    1 Java入门 899
    2 Python入门 234
    3 C入门 145
    [quit(按q退出),check(按c检查购物车),pay(按p付款),back(按b返回上级)]
    请输入你需要购买的书本id:1
    **************************************************
    你已选中了如下商品:
    [{'book': 'Java入门', 'bid': '1', 'bprice': '899'}]
    **************************************************
    1 Java入门 899
    2 Python入门 234
    3 C入门 145
    [quit(按q退出),check(按c检查购物车),pay(按p付款),back(按b返回上级)]
    请输入你需要购买的书本id:c
    **************************************************
    你已选中了如下商品:
    **************************************************
    Java入门
    **************************************************
    1 Java入门 899
    2 Python入门 234
    3 C入门 145
    [quit(按q退出),check(按c检查购物车),pay(按p付款),back(按b返回上级)]
    请输入你需要购买的书本id:p
    **************************************************
    你已选中了如下商品:
    **************************************************
    Java入门 899
    **************************************************
    你当前花费总额为: 899
    你确定付款吗?y/ny
    付款成功
    **************************************************
    1 Java入门 899
    2 Python入门 234
    3 C入门 145
    [quit(按q退出),check(按c检查购物车),pay(按p付款),back(按b返回上级)]
    请输入你需要购买的书本id:q
    **************************************************
    1 Java入门 899
    2 Python入门 234
    3 C入门 145
    [quit(按q退出),check(按c检查购物车),pay(按p付款),back(按b返回上级)]
    请输入你需要购买的书本id:1
    **************************************************
    你已选中了如下商品:
    [{'book': 'Java入门', 'bid': '1', 'bprice': '899'}]
    **************************************************
    1 Java入门 899
    2 Python入门 234
    3 C入门 145
    [quit(按q退出),check(按c检查购物车),pay(按p付款),back(按b返回上级)]
    请输入你需要购买的书本id:q
    **************************************************
    购物车里还有东西,请问要退出吗(y/n)
    请选择:n
    1 Java入门 899
    2 Python入门 234
    3 C入门 145
    [quit(按q退出),check(按c检查购物车),pay(按p付款),back(按b返回上级)]
    请输入你需要购买的书本id:b
    **************************************************
    1 图书音像
    2 电子产品
    3 家电家具
    你的账号存款余额: 9101
    请输入你需要购买商品类别id:

  • 相关阅读:
    未命名 1
    介绍一些实用的IOS手势识别库 (COCOS2D)
    cocos2d-x引擎实现$1Unistroke Recognizer手势识别
    【luogu P4755】Beautiful Pair(ST表)(笛卡尔树)(主席树)
    【ybtoj高效进阶 21290】头文件 D(平衡规划)(线段树)
    【ybtoj高效进阶 21289】头文件 C(图论)(dfs)
    【ybtoj高效进阶 21288】头文件 B(线段树)(图论)
    【ybtoj高效进阶 21282】数字重组(DP)(数学)
    【ybtoj高效进阶 21281】矩阵逆转(模拟)
    【ybtoj高效进阶 21280】景点距离(DP)(换根)
  • 原文地址:https://www.cnblogs.com/repo/p/5410418.html
Copyright © 2020-2023  润新知