0

したがって、私は Codeacademy の Python コースを受講しようとしている初心者の中で最もランクの高い初心者です。リストと辞書に関するセクションの最後の問題 ( http://www.codecademy.com/courses/python-beginner-en-IZ9Ra/1#!/exercises/3 ) では、さまざまな株式の合計値を出力するよう求められます。次のように定義された、さまざまな価格のアイテム。

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

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

for ループの 1 つの反復から次の反復、またはループの外側に結果を引き継ぐ方法を考えるのに非常に苦労したので、それらを合計することができました。私はこれを調べるのに時間を費やしましたが、良い答えを見つけることができませんでした。しかし、いずれにせよ、sum()関数を発見したので、次のように書いて正しい答えを得ました。

values = []

for items in prices:
    value = prices[items] * stock[items]
    values.append(value)

print sum(values)

問題は、Codeacademy からsum()まだ教えられていないことです。そのため、Codeacademy なしでこれを行うためのかなり明白な方法を見逃しているようです。それがなければ、4 つの異なる項目の個別の値のリストを取得できましたが、それらを合計することはできませんでした。それで、ある反復から次の反復に結果を引き継ぐ方法について、誰かが私にヒントを与えることができますか? でも、それは間違った考え方だと思いますよね?もしそうなら、私がどのように考えるべきかについて誰かが私にヒントを与えることができますか?

同様の混乱から、2番目のプロジェクトオイラー問題(フィボナッチ数列の偶数を最大400万まで合計する)に行き詰まっています。

ありがとうございました!(これが投稿するのが悪い質問であるか、不十分に定式化されている場合は、説明してください。ありがとうございます!)

4

2 に答える 2

2

あなたが今持っているものは悪い解決策ではありません。リストの作成をスキップして、合計変数に追加するだけです。

total = 0

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

print total

sumまたは、ワンライナーのジェネレーターを使用します。

total = sum(prices[item] * stock[item] for item in prices)
于 2013-03-29T22:07:22.540 に答える
2
totalValue = 0

for item in prices:
     totalValue += prices[item] * stock[item]

print totalValue
于 2013-03-29T22:04:04.910 に答える