質問: {' apple ' : 100, ' banana':200} for item_name in items : print( item_name + 'は1個' + str( items [item_name]+ '円です') という箇所なのですが、この問題のヒントのところに 「果実のリストは items 、果実の名前は item_nameという変数に代入されているので、item[item_name]とすることで、果実一個の値段を取得できます。 と書いてありました。 なぜ、[item_name]とするだけで、数値が取得できるのでしょうか。 for式の特徴がいまいち、頭に入っていないのかもしれません。 よろしくお願いいたします。
回答: まず、items[item_name] で一つの意味になるので、区切るところを間違えないようにしてくださいね。 1行目のitemsの代入で、「ディクショナリ」や「辞書」と呼ばれるものを使っています。 まずは、これについて検索して調べてみて下さい。よくわからなければ、「連想配列」や「hashmap」などのキーワードでも検索してみて下さい。わかりやすい説明ページが見つかると思います。 このディクショナリで、文字列の名前をキーにした「値の保持」ができます。 つまり、appleという文字列をキーに、100の値を保持し、 bananaという文字列をキーに、200の値を保持します。 そのディクショナリをitemsとして代入しています。 そして、そのitemsに保持した値を参照する場合には、items[キー文字列] で参照します。 試しに、プログラムの最後の行に、次の行を書き足して実行してみて下さい。 print(items['apple']) 保持した100の値が表示されるはずです。 ここまで理解できたら、あとはfor文です。 item_nameには、キーの文字列が繰り返すたびに、順次代入されます。 このプログラムのケースでは、'apple'、'banana'の2つのキーの分だけループします。 つまり、1回目のループで、item_nameが'apple'になり、2回目のループでitem_nameが'banana'になります。 これでこのプログラムが理解できたのではないでしょうか。