0

私はcodeacademyでpythonを学ぼうとしています.2つの与えられた辞書(1つは食品と購入価格のリスト+ 2つ目は同じ食品のリストですが、在庫数)を取り、どのように計算するかを計算することでした。すべての食品が売れれば、多くの収入が得られます。

最初に、このエラー メッセージが表示"can't multiply sequence by non-int of type 'list'"されました。呼び出している値が数字なので、これは変だと思いました。o_Oでも大丈夫です。次に、float関数を使用して文字列を変換しようとしました(とを使用してfloat(quan)計算してfloat(cost)いました)。しかし、その後、このエラーが発生します。"TypeError: float() argument must be a string or a number" 実行して変換しようとしましたfloat(prices.value())が、同じエラーメッセージも表示されます。cost と quan のみを印刷しようとしたところ、出力が正常に見えたため、エラーはループではなく float 関数の使用方法にあると思います。

どうもありがとうございました。

 prices = {
     "banana": 4,
     "apple": 2, 
     "orange": 1.5, 
     "pear": 3, 
 }
 name, cost = prices.keys(), prices.values()    
 stock = {
     "banana": 6,
     "apple": 0,
     "orange": 32,
     "pear": 15
 }
 items, quan = stock.keys(), stock.values()
 for name, cost in prices.iteritems():
    print float(cost) * float(quan)

編集:また、ループを合計する機能はありますか?すべてが売れた場合、私は単一の最終価値を見つけることになっているので

4

3 に答える 3

1

1 つの方法は、キーのみをループすることです。

for key in prices:
    if key in stock:
        print(prices[key] * stock[key])

あなたの場合、両方の辞書に同じキーがありますが、各キーpricesが にもあることを確認する条件を追加しましたstock。次に、そうであると仮定して、辞書の値を掛け合わせます。


すべての値を合計するには、

print(sum(prices[key] * stock[key] for key in prices))

条件を含めたい場合は、

print(sum(prices[key] * stock[key] for key in prices if key in stock))

または、複数行にしたい場合:

total = 0

for key in prices:
    total += prices[key] * stock[key]

print(total)
于 2013-07-19T04:00:39.390 に答える
0

quan辞書内のすべての値のリストに設定しています。それはあなたが望むものではありません。キーとしてに対応する単一の値を探していnameます。

于 2013-07-19T04:00:40.000 に答える