2016-04-26 22 views
1

から3買い物かごに追加する、とPythonにストック

を等価を取るこんにちは、私は、各キーは識別番号であり、各値の辞書である辞書。ように(製品の在庫を持っています情報)。プログラムは、識別番号(希望する製品)と希望する金額を取ります。 コードは、空のバスケットに商品情報を追加し、元の在庫数から入力された金額を差し引いて編集します。バスケット内の金額を希望の金額に変更します。

しかし、このコードでは在庫出力の商品の額をゼロにしています。バスケット内の製品の量もゼロを出力する。

via printコマンド私は問題を見つけたと思います。以下のif文のどこかに書かれています。

でも、私はどこが間違っているのか分かりません。

ありがとうございます。あなたはあなたの問題の状況

  stock = { 
       '10005' : { 
         'name' : 'Conference Pears Loose', 
         'price' : 2.00, 
         'unit' : 'kg', 
         'promotion' : None, 
         'group' : None, 
         'amount' : 1.550 
       }, 
       '10013' : { 
         'name' : 'Emmental Slices 250G', 
         'price' : 1.75, 
         'unit' : 'pieces', 
         'promotion' : 'get2pay1', 
         'group' : None, 
         'amount' : 9 
       }, 
       '10015' : { 
         'name' : 'Diced Beef 400G', 
         'price' : 4.50, 
         'unit' : 'pieces', 
         'promotion': 'get4pay3', 
         'group' : 4, 
         'amount' : 14 
       }} 

      def listitems(dct): 
       """ 
       inputs dictionary of stock and prints a lovely table showing all the items with info 
       """ 
       print("\n") 
       print(" {0:^5} | {1:<38} | {2:^7} | {3:^11} ".format("Ident", "Product", "Price", "Amount")) 
       print("-" *7 + "+" + "-" * 40 + "+" + "-" * 9 + "+" + "-"*12 + "+") 
       for key in sorted(dct): 
        print(" {:^5} | {name:<38} | {price:>5.2f} £ | {amount:>} {unit:<14}".format(key, **dct[key])) 
       return 


      #main code of function 



      basket = dict() 
      quantity = input("Number of items? ") 
      #amount = 6 
      ident = input("Indentification number? ") 
      #ident = "10011" 

      listitems(stock) 


      try: 
       quantity = int(quantity) 
      except ValueError: 
       try: 
        quantity = float(quantity) 
       except ValueError: 
        print("You have entered a invalid amount")  

      try: 
       ident = str(ident) 
      except ValueError: 
       print("you have entered a invalid indent.") 


      #print("amount is ", quantity) 
      #print("amount in stock ", stock[ident]["amount"]) 



      if quantity > 0: 
       if quantity < stock[ident]["amount"]: 

        basket[ident] = stock[ident] #adding the product tp the basket. 

        basket[ident]["amount"] = quantity 

        stock[ident]["amount"] = stock[ident]["amount"] - quantity 





      listitems(stock) 
      listitems(basket) 


      print("amount is ", quantity) 
      print("amount in stock ", stock[ident]["amount"]) 
      print("amount in basket", basket[ident]["amount"]) 

答えて

1
basket[ident] = stock[ident] 

を視覚化するための株式と「きれい」印刷機能コードの上部に表示され、変更可能なタイプがあるので、これは2を同一にしないでください物事は2つの異なる名前の1つです。あなたは、あなたがコピーしたいことを明示的に言わなければならないやりたい

basket[ident]["amount"] = quantity # ok with that 
# since basket[ident] and stock[ident] are now the same you just subtract the amount you just set to itself 
stock[ident]["amount"] = stock[ident]["amount"] - quantity 

basket[ident] = stock[ident].copy() 
+0

はどうもありがとうございました!今の2時間のように私を悩ませていた。 常にstackoverflowを信用している –

関連する問題