短程式碼:選擇商品並對購買商品的數量進行追加輸出
阿新 • • 發佈:2020-09-03
短程式碼:選擇商品並對購買商品的數量進行追加輸出(修改版)
# 購物車 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()
總結:
- 優點:
- 雖然利用推導式會略顯複雜,但是在列表的使用上以及篩選上是一個很好的思路
- 缺點:
- 字典的值可以直接進行改變(思路一定要開闊)