python模拟购物车小项目
# 模拟购物车:
# 要求:
# 1,用户先给自己的账户充钱:比如先充3000元。
# 2,有如下的一个格式:
# goods = [{"name": "电脑", "price": 1999},
# {"name": "鼠标", "price": 10},
# {"name": "游艇", "price": 20},
# {"name": "美女", "price": 998},]
# 3,页面显示 序号 + 商品名称 + 商品价格,如:
# 1 电脑 1999
# 2 鼠标 10
# …
#
# 4,用户输入选择的商品序号,然后打印商品名称及商品价格,并将此商品,
# 添加到购物车(自己定义购物车),用户还可继续添加商品。
# 5,如果用户输入的商品序号有误,则提示输入有误,并重新输入。
# 6,用户输入N为购物车结算,依次显示用户购物车里面的商品,数量及单价,
# 若充值的钱数不足,则让用户删除某商品,直至可以购买,若充值的钱数充足,则可以直接购买。
# 7,用户输入Q或者q退出程序。
# 8,退出程序之后,依次显示用户购买的商品,数量,单价,以及此次共消费多少钱,账户余额多少。
# 充值金额
# a =0
# b =int(input())
f1 =0
s2 =0
my_list2 =[] #已经购买的商品列表
def chongzhi(b):
"""
b:充值的金额
s2充值后余额
"""
global s2
s2 += b
print(f"充值后余额{s2}")
return s2
goods = [{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998}, ]
my_list1 = [] # 商品列表初始
for i, dic in enumerate(goods):
a, b = list(dic.values()) # 利用字典键值对中的值转换成列表进行拆包
print(i + 1, a, b)
my_list1.append(list(dic.values()))
# print(my_list1)
my_buy = [] # 购物车列表
my_buy_dic = {}
for i, v in enumerate(my_list1):
my_buy_dic[f"{i + 1}"] = v # 给字典 的键转换成数字型字符串
# {'1': ['电脑', 1999], '2': ['鼠标', 10], '3': ['游艇', 20], '4': ['美女', 998]}
# print(my_buy_dic.keys())
def add_buy(wupin):
if wupin not in my_buy_dic.keys():
print("输入错误请重新输入")
return
else:
# print(my_buy_dic[wupin])
my_buy.append(my_buy_dic[wupin])
print("添加商品成功")
print(f"购物车列表:{my_buy}")
my_buy_settlement = {}
for i in my_buy:
if str(i) not in my_buy_settlement:
my_buy_settlement.setdefault(str(i), 1)
else:
my_buy_settlement[str(i)] += 1
# print(my_buy_settlement)
for k, v in my_buy_settlement.items():
# print(eval(k),v)
s = ' '.join(str(i) for i in eval(k))
print(s, v)
return my_buy
def buy_Settlement11(my_buy,s1): #s1 充值后的余额
print(my_buy)
my_buy_settlement = {}
for i in my_buy:
if str(i) not in my_buy_settlement:
my_buy_settlement.setdefault(str(i), 1)
else:
my_buy_settlement[str(i)] += 1
print(my_buy_settlement)
count = 0
for k,v in my_buy_settlement.items():
# values = ','.join([unicode(i) for i in value_list])
count+=eval(k)[-1] * v
print(count)
if count > int(float((s1))):
print("用户钱不足,请删减购物车,或者充值")
return
else:
global f1
f1= s1 - count
my_list2.extend(my_buy)
print(f"结算后余额是{f1}元")
return f"结算后余额是{f1}元"
def del_my_buy(my_buy):
print("删除购物车中商品开始")
print(my_buy)
if len(my_buy)!=0:
my_buy.pop()
else:
print("购物车中已经没有商品了!")
# print("删除购物车列表中最后一个商品后:")
# print(f"购物车列表:{my_buy}")
return my_buy
def xunhuan():
while True:
wupin = input("请用户输入商品序号:")
if wupin.upper() == "Q":
print("退出程序")
if my_list2:
print(f"购买的商品为:{my_buy}",f"余额{f1}元")
else:
print("您没有结算")
return "退出程序"
elif wupin.upper() == "N":
print("开始结算")
buy_Settlement11(my_buy,s2)
elif wupin.upper()=="C":
b =int(input())
chongzhi(b)
elif wupin.upper()=="D":
del_my_buy(my_buy)
else:
add_buy(wupin)
def appstart():
xunhuan()
appstart()
人生苦短,我用python