python优化代码模块二(字典应用)编写程序(补充文本读写) 显示商品列表,让用户根据序号选择商品,加入购物车购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。附加:可充值、某商品移除购物车,商品列表格式参考如下:(从文件中读取) goods = [ {"name": "电脑", "price": 8999, “storage”:300,"category":"数码产品"}, {"name": "Ipad", "price": 80, “storage”:200,"catego
时间: 2023-07-05 18:29:28 浏览: 146
好的,下面是实现该功能的代码,包括从文件中读取商品列表和将购物车信息写入文件:
```
import json
# 读取商品列表
with open('goods.txt', 'r', encoding='utf-8') as f:
goods = json.load(f)
# 读取账户余额
with open('balance.txt', 'r') as f:
balance = float(f.read())
# 初始化购物车
cart = []
while True:
# 显示商品列表
print('商品列表:')
for i, item in enumerate(goods):
print('{}. {}, 价格:{}元,库存:{}件'.format(i + 1, item['name'], item['price'], item['storage']))
print('当前账户余额为:{}元'.format(balance))
print('请输入要购买的商品序号(输入0结束购买):')
choice = input()
if choice == '0':
break
elif not choice.isdigit() or int(choice) > len(goods):
print('输入有误,请重新输入!')
continue
else:
choice = int(choice) - 1
item = goods[choice]
if item['storage'] == 0:
print('该商品库存不足,无法购买!')
continue
# 计算购买价格
price = item['price']
print('您选择了{},价格为{}元,请输入购买数量:'.format(item['name'], price))
count = input()
if not count.isdigit() or int(count) <= 0:
print('输入有误,请重新输入!')
continue
count = int(count)
if count > item['storage']:
print('该商品库存不足,无法购买!')
continue
total_price = price * count
if total_price > balance:
print('账户余额不足,请充值后再购买!')
continue
# 将商品加入购物车
item['count'] = count
cart.append(item)
# 更新商品库存
item['storage'] -= count
# 更新账户余额
balance -= total_price
print('购买成功,当前购物车中共有{}件商品,总价为{}元。'.format(len(cart), total_price))
# 将购物车信息写入文件
with open('cart.txt', 'w', encoding='utf-8') as f:
json.dump(cart, f, ensure_ascii=False)
# 将账户余额写入文件
with open('balance.txt', 'w') as f:
f.write(str(balance))
```
其中使用了 `json` 模块来读写 JSON 格式的文件,可以更方便地处理商品列表和购物车信息。需要注意的是,在购买商品时需要判断库存和账户余额是否充足,并且在购买成功后需要更新商品库存和账户余额。最后将购物车信息和账户余额分别写入文件中,以便下次使用时读取。
阅读全文