您的位置:首页 > 其它

练习-购物车功能实现

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:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: