2016-09-06 6 views
-4

私はPythonで新しいですが、コードは以下返す保つ:サポートされていないオペランドのタイプ(複数可)のための+ = 'INT' と 'str' は

unsupported operand type(s) for +=: 'int' and 'str' 

コード:

shopping_list = ["banana", "orange", "apple"] 

stock = { 
    "banana": 6, 
    "apple": 0, 
    "orange": 32, 
    "pear": 15 
} 

prices = { 
    "banana": 4, 
    "apple": 2, 
    "orange": 1.5, 
    "pear": 3 
} 

# Write your code below! 
def compute_bill(food): 
    total = 0 
    for number in food: 
     total += number 
    return total 

compute_bill(['apple']) 
+0

[MCVE](/ help/mcve) –

+0

こんにちはKasramvdを入力してください。 print compute_bill(food)のような関数を呼び出しても、エラーメッセージは表示されません。 – Mukky

+0

'compute_bill'をどのように呼び出すことができますか? –

答えて

3

あなた現在のコードは、合計のフードの文字列名を追加しようとしています。これを試してみてください:

def compute_bill(food): 
    total = 0 
    for f in food: 
     number = prices.get(f, 0) 
     total += number 
    return total 

.get()prices辞書にエントリを持っていない食品を渡すの問題を解決します:例えば、"apple"は、価格を持っていない場合、それは単に合計に0が追加されます。これにより、あなたのプログラムがクラッシュしないようになります:commute_bill(['appple', 'grape'])。つまり、間違ったフルーツの価格やpricesにないフルーツの価格を計算しようとするとクラッシュしません。しかし、あなたのプログラムがクラッシュする(または、悪いデータが入力されたときに少なくともエラーを出し、そのエラーを処理する)ことが望ましいかもしれません - その部分はあなた次第です。

2
def compute_bill(food): 
    total = 0 
    for number in food: 
     total += prices[number] # You need to pull from the prices dictionary 
    return total 

これでは在庫がなくても問題は解決しません。

関連する問題