短代码:选择商品并对购买商品的数量进行追加输出

短代码:选择商品并对购买商品的数量进行追加输出(修改版)

# 购物车
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()

总结:

  • 优点:
    • 虽然利用推导式会略显复杂,但是在列表的使用上以及筛选上是一个很好的思路
  • 缺点:
    • 字典的值可以直接进行改变(思路一定要开阔)
posted @ 2020-09-03 15:50  小杨的冥想课  阅读(202)  评论(0编辑  收藏  举报