简单购物车操作

# 商品信息在文件存储的,存储形式:
# name price
# 电脑 1999
# 鼠标 10
# 游艇 20
# 美女 998
# 1,用户先给自己的账户充钱:比如先充3000元。
# 2,读取商品信息文件将文件中的数据转化成下面的格式:
# goods = [{"name": "电脑", "price": 1999},
# {"name": "鼠标", "price": 10},
# {"name": "游艇", "price": 20},
# {"name": "美女", "price": 998},
# ...... ]
# 3,页面显示 序号 + 商品名称 + 商品价格,如:
# 1 电脑 1999
# 2 鼠标 10
# n 购物车结算
# q或者Q退出程序。
# 4,用户输入选择的商品序号,然后打印商品名称及商品价格,并将此商品,添加到购物车,用户还可继续添加商品。
# 5,如果用户输入的商品序号有误,则提示输入有误,并重新输入。
# 6,用户输入n为购物车结算,依次显示用户购物车里面的商品,数量及单价,若充值的钱数不足,则让用户删除
# 某商品,直至可以购买,若充值的钱数充足,则可以直接购买。
# 7,用户输入Q或者q退出程序。
# 8,退出程序之后,依次显示用户购买的商品,数量,单价,以及此次共消费多少钱,账户余额多少,并将购买信息写入文件。
with open("大作业1商品详情", encoding="utf-8", mode="w+") as f:
print(f.tell())
s='''
name price
电脑 1999
鼠标 10
游艇 20
美女 998
'''.strip()
f.write(s)
print(f.tell())
f.seek(0,0)
li=[]
goods=[]
for i in f:
li.append(i.strip())
print(li)
for i in range(len(li)):
dic = dict({})
if i>=1:
dic[li[0].split()[0]]=li[i].split()[0]
dic[li[0].split()[1]]=li[i].split()[1]
goods.append(dic)
print(goods[:])
for i in goods:
print(goods.index(i)+1,goods[goods.index(i)]["name"],goods[goods.index(i)]["price"])
remainder=input("请输入充值金额")
shoppingcart=[]
cartname = []
cartnumber = {}
while 1:
num=input("请输入需要购买的商品编号").strip()
if num.upper()=="Q":
print("程序终止")
break
elif num.isdecimal():
print(goods)
num=int(num)
if num>3:
print("请输入有效的编号")
break
else:
cartname.append(goods[num]["name"])
cartname=list(set(cartname))
cartnumber[goods[num]["name"]]=cartnumber.get(goods[num]["name"],0)+1
print(cartname, cartnumber)
elif num.upper()=="N":
for i in cartname:
for k in goods:
if goods[goods.index(k)]["name"]==i:
price=goods[goods.index(k)]["price"]
tuple=(i,cartnumber[i],price)
shoppingcart.append(list(tuple))
print(shoppingcart)
s=0
for i in shoppingcart:
count=i[1]*int(i[2])
s+=count
while s>int(remainder):
print("余额不足,请修改购物车数量")
print(shoppingcart)
removegood=input("输入要修改的商品")
removenumber=int(input("请输入要购买的数量"))
for i in shoppingcart:
if i[0]==removegood:
i[1]=removenumber
s = 0
for i in shoppingcart:
count1 = int(i[1]) * (int(i[2]))
s += count1
for i in shoppingcart:
if i[1]==0:
shoppingcart.remove(i)
else:
print(f"本次消费{s}购买{shoppingcart}余额{int(remainder)-s}")
with open("购买信息", encoding="utf-8", mode="w") as f:
f.write(f"本次消费{s}购买{shoppingcart}余额{int(remainder)-s}")
break
else:
print("输入符合类型的数字,重新输入")
break





原文地址:https://www.cnblogs.com/diracy/p/13125073.html