查询用户【模块二(字典应用)】编写程序显示商品列表,让用户根据序号选择商品,加入购物车购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。附加:可充值、某商品移除购物车,商品列表格式参考如下:goods = [《" name”:“电脑”," price ":8999 .“storage”:300 , " category ":“数码产品",( " name " : " Ipad " , " price " : 88 .“storage”206 , " category ":“数码产品”),( " name " : " " , " price " : 1e .“storage " : 208 " . category " : " ) , ( " name”:“手机”," price ":3998 .“storage”:108 " . " category ":“数码产品”. ( " name”:“打印纸”,“price ":2 .“storage”:480”.“category ":“办公用品”. ( " name”:“文件夹”,“price”:10 .“storage”:600 . " category”:“办公用品”) ]提示:1完成单个商品信息的输入输出,以字典结构保存数据。2、构建商品列表,并完成基本结构商品信息的添加、删除、修改0、退出1、添加商品信息2、查找商品信息3、修改商品信息4、浏览商品信息
时间: 2023-06-13 12:07:20 浏览: 82
以下是代码实现:
```python
# 定义商品列表
goods = [
{"name": "电脑", "price": 8999, "storage": 300, "category": "数码产品"},
{"name": "Ipad", "price": 88, "storage": 206, "category": "数码产品"},
{"name": "耳机", "price": 208, "storage": 208, "category": "数码产品"},
{"name": "手机", "price": 3998, "storage": 108, "category": "数码产品"},
{"name": "打印纸", "price": 2, "storage": 480, "category": "办公用品"},
{"name": "文件夹", "price": 10, "storage": 600, "category": "办公用品"}
]
# 定义账户余额
balance = 10000
# 显示商品列表
def show_goods():
print("序号\t商品名称\t单价\t库存\t品类")
for i, g in enumerate(goods):
print("{0}\t{1}\t{2}\t{3}\t{4}".format(i+1, g["name"], g["price"], g["storage"], g["category"]))
# 根据序号选择商品
def choose_goods():
while True:
try:
num = int(input("请输入商品序号:"))
if num < 1 or num > len(goods):
print("输入错误,请重新输入")
else:
return num
except ValueError:
print("输入错误,请重新输入")
# 加入购物车
def add_to_cart(cart, num):
g = goods[num-1]
if g["storage"] == 0:
print("商品库存不足")
return
if g in cart:
print("该商品已在购物车中")
else:
cart.append(g)
print("商品已加入购物车")
# 移除购物车
def remove_from_cart(cart, num):
if num < 1 or num > len(cart):
print("输入错误,请重新输入")
return
g = cart.pop(num-1)
print("商品{0}已从购物车中移除".format(g["name"]))
# 显示购物车
def show_cart(cart):
if not cart:
print("购物车为空")
else:
print("序号\t商品名称\t单价\t库存\t品类")
for i, g in enumerate(cart):
print("{0}\t{1}\t{2}\t{3}\t{4}".format(i+1, g["name"], g["price"], g["storage"], g["category"]))
# 计算购物车总价
def calc_total_price(cart):
total_price = sum([g["price"] for g in cart])
return total_price
# 充值
def recharge():
global balance
while True:
try:
amount = float(input("请输入充值金额:"))
if amount <= 0:
print("输入错误,请重新输入")
else:
balance += amount
print("充值成功,当前余额为{0}".format(balance))
break
except ValueError:
print("输入错误,请重新输入")
# 主程序
def main():
cart = []
while True:
print("====================")
print("1.添加商品 2.查找商品 3.修改商品 4.浏览商品 5.查看购物车 6.移除购物车 7.购买商品 8.充值 0.退出")
print("====================")
choice = input("请选择操作:")
if choice == "0":
print("谢谢使用,再见!")
break
elif choice == "1":
name = input("请输入商品名称:")
price = float(input("请输入商品单价:"))
storage = int(input("请输入商品库存:"))
category = input("请输入商品品类:")
goods.append({"name": name, "price": price, "storage": storage, "category": category})
print("商品已添加")
elif choice == "2":
keyword = input("请输入查找关键字:")
result = [g for g in goods if keyword in g["name"] or keyword in g["category"]]
if not result:
print("没有找到匹配的商品")
else:
print("序号\t商品名称\t单价\t库存\t品类")
for i, g in enumerate(result):
print("{0}\t{1}\t{2}\t{3}\t{4}".format(i+1, g["name"], g["price"], g["storage"], g["category"]))
elif choice == "3":
num = choose_goods()
g = goods[num-1]
print("当前商品信息为:")
print("商品名称:{0},单价:{1},库存:{2},品类:{3}".format(g["name"], g["price"], g["storage"], g["category"]))
g["name"] = input("请输入新的商品名称:")
g["price"] = float(input("请输入新的商品单价:"))
g["storage"] = int(input("请输入新的商品库存:"))
g["category"] = input("请输入新的商品品类:")
print("商品信息已修改")
elif choice == "4":
show_goods()
elif choice == "5":
show_cart(cart)
elif choice == "6":
num = int(input("请输入要移除的商品序号:"))
remove_from_cart(cart, num)
elif choice == "7":
total_price = calc_total_price(cart)
if total_price > balance:
print("账户余额不足,购买失败")
else:
balance -= total_price
cart.clear()
print("购买成功,当前余额为{0}".format(balance))
elif choice == "8":
recharge()
else:
print("输入错误,请重新输入")
if __name__ == "__main__":
main()
```
运行程序后,会显示以下菜单:
```
====================
1.添加商品 2.查找商品 3.修改商品 4.浏览商品 5.查看购物车 6.移除购物车 7.购买商品 8.充值 0.退出
====================
请选择操作:
```
用户可以根据提示进行操作,比如输入 4 可以查看商品列表:
```
序号 商品名称 单价 库存 品类
1 电脑 8999 300 数码产品
2 Ipad 88 206 数码产品
3 耳机 208 208 数码产品
4 手机 3998 108 数码产品
5 打印纸 2 480 办公用品
6 文件夹 10 600 办公用品
```
用户输入序号加入购物车后,可以通过输入 5 查看购物车,通过输入 6 移除购物车中的商品,通过输入 7 购买商品并扣除账户余额。输入 8 可以进行充值。输入 0 可以退出程序。
阅读全文