zoukankan      html  css  js  c++  java
  • 短代码:选择商品并对购买商品的数量进行追加输出

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

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

    总结:

    • 优点:
      • 虽然利用推导式会略显复杂,但是在列表的使用上以及筛选上是一个很好的思路
    • 缺点:
      • 字典的值可以直接进行改变(思路一定要开阔)
  • 相关阅读:
    LC 155 Min Stack
    TUM 慕尼黑工业大学 MSEI 课程结构介绍 ws19/20
    C++ MinGW 配合 Sublime Text 搭建
    LC 752 Open the Lock
    LC 200 Number of Islands
    Python lambda
    关于无法连接网络安装VisualVM解决方案
    二叉堆的解读
    哈希表的实现
    红黑树解读
  • 原文地址:https://www.cnblogs.com/yangzilaing/p/13608005.html
Copyright © 2011-2022 走看看