短代码:选择商品并对购买商品的数量进行追加输出
短代码:选择商品并对购买商品的数量进行追加输出(修改版)
# 购物车
SHOPPING_CAR = { }
# 商品列表
GOODS_LIST = [
{'id':1,'title':'饼干','price':1000},
{'id':3,'title':'汽水','price':1000},
{'id':8,'title':'奥利奥','price':1000},
{'id':9,'title':'火烧','price':1000},
]
def run():
for i in range(len(GOODS_LIST)):
print(i+1,GOODS_LIST[i]["title"])
while True:
choice = int(input("请选择商品的序列号:"))
num = int(input("请选择需要商品的数量:"))
row_info = GOODS_LIST[choice-1]
if row_info["id"] in SHOPPING_CAR: #标志物
SHOPPING_CAR[row_info["id"]]["count"] += num #需要定义SHOPPING_CAR的类型
else:
SHOPPING_CAR[row_info['id']] = {"title":row_info["title"],"price":row_info["price"],"count":num}
#字典键值对的生成
print(SHOPPING_CAR)
run()
总结
- 在具有标志性的选项时,可以利用字典的键作为标志,将某个整体作为值(应大胆的进行应用)
问题:待解决
dic = {'k1':1,"k2":2,"k3":3}
dc2 = {"yang":5,"zi":5,"liang":8}
dic.update(dc2) #???????
print(dic)
- 为什么字典不是不可变类型吗?字典中的update不需要的新的变量来接受??????
- 以及对字典进行元素的追加的两种方法????????
代码(在不改变id顺序的前提下进行操作)(未修改版)
# 购物车
shopping_card = { }
# 商品列表
goods_list = [
{'id':1,'title':'饼干','price':1000},
{'id':3,'title':'汽水','price':1000},
{'id':8,'title':'奥利奥','price':1000},
{'id':9,'title':'火烧','price':1000},
]
#先分页显示
def func():
for item in goods_list:
print(item["id"],item["title"])
#在购物车的追加并显示
while True:
name = int(input("请出示要购买商品的序列号:"))
num = int(input("输入要购买商品的数量:"))
#应该是有对应关系的
info = [i for i in goods_list if i["id"] == name] #利用推导式找出对应id
row_info = info[0]#将列表中唯一的字典提取出来
if name in shopping_card:
shopping_card[name] = {"title":row_info["title"],"count":shopping_card[name]["count"]+num}
#我他妈快感动哭了,原来在“count”可以进行这么长的操作。一直对加个括号有执念,但其实只要加多余的括号就会出错
else:
shopping_card[name] ={"title": row_info["title"], "count":num}
print(shopping_card)
func()
总结:
- 优点:
- 虽然利用推导式会略显复杂,但是在列表的使用上以及筛选上是一个很好的思路
- 缺点:
- 字典的值可以直接进行改变(思路一定要开阔)
记录学习的点点滴滴