练习-购物车功能实现
2016-04-19 22:13
267 查看
#第二天作业:编辑一个购物车 #xxx 2016/4/19 #模块一:选择商品,添加购物车 #模块二:查看购物车 #模块三:购买模块,钱够不够 #模块四:返回模块,返回上一级 #模块五:退出模块 #描述:本次作业运用了上次作业没运用到的字典,和列表与字典的嵌套;运用了while - flag 来 #做循环返回,另外 虽说是2级目录,不过只拿了一类商品做练习,这里没做库存计算 name = "wellcome,let's go" name_left = "*" name_right = "*" print(50*"*") print(name_left.ljust(0),name.center(50),name_right.rjust(0)) print(50*"*") kind_list = [ {"kid": "1", "kname": "图书音像"}, {"kid": "2", "kname": "电子产品"}, {"kid": "3", "kname": "家电家具"}, ] book_list = [ {"bid": "1", "book":"Java入门", "bprice": "899"}, {"bid": "2", "book":"Python入门", "bprice": "234"}, {"bid": "3", "book":"C入门", "bprice": "145"}, ] technology_list = [ {"tid": "1", "technology":"笔记本", "tprice": "4980"}, {"tid": "2", "technology":"手机", "tprice": "3782"}, {"tid": "3", "technology":"硬盘", "tprice": "1234"}, ] house_list = [ {"hid": "1", "house":"电饭煲", "hprice": "567"}, {"hid": "2", "house":"电磁炉", "hprice": "243"}, {"hid": "3", "house":"沙发", "hprice": "1486"}, ] user_asset = 10000 #用户资产 gouwuche = [] #购物车表示一个空列表 kind_flag = False while not kind_flag: #外循环 for k in kind_list: #打印商品种类列表 print(k.get("kid"), "\t", k.get("kname")) #字典获取输出编号,以及商品种类 print("你的账号存款余额:", user_asset, ) #显示余额 kind_num = int(input("请输入你需要购买商品类别id:")) #引导用户输入 print("*" * 50) if (kind_num == 1): book_flag = False while not book_flag: #内循环 for b in book_list: print(b.get("bid"), "\t", b.get("book"), "\t", b.get("bprice")) book_choice = input("[quit(按q退出),check(按c检查购物车),pay(按p付款),back(按b返回上级)]\n请输入你需要购买的书本id:") print("*"*50) if book_choice.isdigit(): #模块一,加入购物车 book_choice = int(book_choice) if book_choice <= len(book_list) and book_choice > 0: #如果选择物品编号在有效范围内,则添加到购物车 gouwuche.append(book_list[book_choice-1]) #将选中物品加入列表,由于列表下标是从0开始的,而这里选择编号是从1开始,所以减1 print("你已选中了如下商品:\n",gouwuche) #这里以列表方式显示了,可以优化 else: print("输入不合法,请重新输入") #如果输入编号不在有效范围,重新输入 print("*"*50) elif book_choice == "c": #模块二:检查购物车 total = 0 print("你已选中了如下商品:\n","*"*50) for b in gouwuche: print(b.get("book"),) #检查结果,只显示物品名字(当然可以优化+价格) total += int(b.get("bprice")) #计算购买总额 print("*"*50) elif book_choice == "p": #模块三:购买 total = 0 print("你已选中了如下商品:\n", "*" * 50) for b in gouwuche: print(b.get("book"),"\t",b.get("bprice") ) #显示购物车清单,物品名+价格 total += int(b.get("bprice")) print("*" * 50) print("你当前花费总额为:",total) pay = input("你确定付款吗?y/n") if pay == "y": left = user_asset - total #计算余额 if left >= 0: pay_list = gouwuche gouwuche = [] #清空购物车 user_asset = left #变化后的资产,用于下次购买使用 print("付款成功") else : for p in gouwuche: #如果钱不够,在购物车上删除部分商品 print(p.get("bid"),p.get("book"),p.get("bprice")) #列出购物清单 dele_pay = input("请删除部分商品id:") #选择删除商品编号 gouwuche.pop(dele_pay -1) print("*" * 50) elif book_choice == "b": #如果输入b,退出循环,返回上级 book_flag = True #模块四:返回上级 elif book_choice == "q": #如果输入q,退出系统 if gouwuche : #模块五:退出系统 print("购物车里还有东西,请问要退出吗(y/n)") quit_xitong = input("请选择:") if quit_xitong == "y": break #直接退出 else: continue #退出当前循环 elif (kind_num == 2): for t in technology_list: print(t.get("tid"), "\t", t.get("technology"), "\t", t.get("tprice")) technology = input("请输入你需要购买的电子产品名:") elif (kind_num == 3): for h in house_list: print(h.get("hid"), "\t", h.get("house"), "\t", h.get("hprice")) house = input("请输入你需要购买的家电家具:") else: print("输入不合法,是否重新输入(y/n)") acc = input("请选择:") if acc == "y": continue else: 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:
相关文章推荐
- UserAction extends ActionSupport implements ModelDriven<User> .tmp 上传图片文件
- ZOJ 3605 Find the Marble
- Java代码规范和一些常见问题
- 你是被别人整还是整别人
- Android入门篇(一)Android工程的搭建,导入与导出,图标的修改
- Java代码规范和一些常见问题
- Java代码规范和一些常见问题
- Fragment
- java中如何将char数组转化为String?
- 微软面试100题 - 53
- js弹出框
- R中的ggplot2包
- makefile简单使用(一)
- picasso初级基础
- 带你实现开发者头条APP(三) 首页实现
- C语言结构体学习笔记
- ZOJ 3602 Count the Trees
- MAN IP 学习及示例(centos7)
- 从头认识多线程-1.15 优先级特性-继承性
- LINUX下PHP开启短标签short_open_tag支持