练习-购物车功能实现

  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:

原文地址:https://www.cnblogs.com/repo/p/5410418.html