2016-11-14 14 views
0

ディクショナリをインベントリとして受け付ける関数と、そのプロダクトのインベントリをいつ更新するべきかを示す(name、number)ペアのproduct_listを書く必要がありますこれは負の数になります。プロダクトディクショナリの加減算

初めて商品が言及されると、その商品は辞書に追加され、カウントがゼロになると、辞書に残ります。カウントがマイナスになる場合は、値のエラーを発生させる必要があります。

例:

d = {"apple":50, "pear":30, "orange":25} 

ps = [("apple",20),("pear",-10),("grape",18)] 

shelve(d,ps) 
d 
{'pear': 20, 'grape': 18, 'orange': 25, 'apple': 70} 

shelve(d,[("apple",-1000)]) 
Traceback (most recent call last): 

ValueError: negative amount for apple 

私のコードは、私が最後の印刷行を含める場合によっては、予期しないEOFエラーや無効な構文のいずれかを与えています。現在のところ、目標を達成していないのは間違いないが、これはフォーマットであり、これを解決するために必要なロジックだと私は信じている。私は、xが負の果実であるところで、 '負の量のx'を印刷する関数が必要です。この上の任意のヘルプは

を高く評価しているコード:

def shelve(inventory,product_list): 
    count = 0 

try: 

    for x in product_list: 
     if x == True: 
      product_list.append(x) 
      count += key 
     else: 
      return product_list 

except ValueError: 
    print ('negative amount for (product)') 


print "hello program starts here" 
d = {"apple":50, "pear":30, "orange":25} 

ps = [("apple",20),("pear",-10),("grape",18)] 

shelve(d,ps) 
+0

python 3はあなたが 'print(" string ")' – TemporalWolf

+0

を使用することを要求します。 – n00bprogrammer22

+0

多くの論理エラーを考えると、Stack Overflowより多くのヘルプが必要になることがあります。宿題のようにも見えます。もしそうなら、私はあなたの学校から助けを求めるでしょう。 – TemporalWolf

答えて

1

あなたの仕事の重要な部分は、サブの問題であなたの問題を分割することです。 dictとlistのデータ構造の使用は、主にそれらのデータ構造を反復することに基づいています。

1.)製品リストを繰り返してください(何が起きているかを確認するために項目を印刷することができます)。次のようにして問題を解決してください。これは製品ループになります。

for x in ps: 
    print x 

たとえば、次のようにリスト要素にアクセスする方法を確認してください。 x [0]またはx [1]を印刷するようにxを変更する

2.)製品ループ内のすべての製品について、インベントリを反復し、インベントリを対応する値に設定する必要があります。インベントリを反復してその内容を印刷することから始めます。より複雑なものを扱う前に、それがどのように動作するのかを確認して、それを試してみてください。 ^^ - D

3)今価値エラーと例外のもの

希望これを追加します(私は繰り返し処理よりも単純な解決策は、その辞書以来、あなたは何をすべきか知っているだろう、そこにある気づい)助けて

+0

詳細な説明をいただきありがとうございます。今後のアドバイスが必要な場合は、私ができることを見て後で返信します – n00bprogrammer22