1. 程式人生 > 實用技巧 >短程式碼:選擇商品並對購買商品的數量進行追加輸出

短程式碼:選擇商品並對購買商品的數量進行追加輸出

短程式碼:選擇商品並對購買商品的數量進行追加輸出(修改版)

# 購物車
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()

總結:

  • 優點:
    • 雖然利用推導式會略顯複雜,但是在列表的使用上以及篩選上是一個很好的思路
  • 缺點:
    • 字典的值可以直接進行改變(思路一定要開闊)