配列変数の一要素ずつ、長い文章の一行ずつを一つずつ処理したいことがあります。そのときは『反復』構文を使うと便利です。以下の書式で使います。
(変数)を反復 #ここに反復処理したいもの ここまで。
それでは『反復』命令を使った例を見ていきましょう。次のプログラムは配列変数の各要素を全部画面に表示するプログラムです。
これを実行すると以下のように表示されます。
イヌ サル キジ
反復構文では、各配列の数だけ繰り返し内容を実行します。そのとき、変数『それ』または変数『対象』に各要素が代入されます。
例えば、配列変数の各要素や文章の一行ずつを一つずつ【***】とカッコをつけて表示したい場合に、『反復』構文を作ると簡単に表示できます。
プログラムを実行すると以下のように表示されます。
【 トラ 】 【 ゾウ 】 【 ウマ 】
変数『それ』と同じように『対象』を使うことでも反復の要素の値を利用できます。
このプログラムを実行すると以下のように表示されます。
【 カバ 】 【 サル 】 【 キジ 】
そもそも、変数『それ』というのは、何か命令を使うとすぐに書き換えられてしまうものです。そこで『対象』という変数を使って反復する対象を得られる仕組みになっています。
次に反復を使って計算をしてみようと思います。
【問題】うどん屋を想像してみてください。働き者のご主人がコツコツうどんを作るお店です。ある日、突然うどんの仕入れ値段が100円高くになってしまいました。そこで止む無くメニューを全て100円高くしたいと思います。メニューは次の通りです。
値段一覧は[600,630,800,850,1200]
以下のように解くことができるでしょう。
これを実行すると以下のように値段表より100円高い金額が表示されます。
700 730 900 950 1300
さっきのは値段だけでしたが、普通値段表といったら、「料理名, 値段」と組になっているはずですね。今度は二次元配列変数を反復してみます。
これを実行すると100円高い値段になって表示されます。
かけうどん, 700 たぬきうどん, 730 ざるそば, 900 日替わり定食, 950 天ぷらうどん, 1300
二次元配列変数を一要素ずつ実行すると、一次元の配列として取り出すことができるんです。それで『対象@0』で料理の名前、『対象@1』で値段を取得することができます。
また、辞書型変数と『反復』文を繰り返すこともできます。
ここは、とあるオーディション会場、スターを目指す若者たちが、自分の熱い魂を歌に託しています。今回、審査員の3人は自分の持ち点10点をそれぞれ気に入った人に割り振ることができるというシステムでの審査方法です。投票結果は以下のようになりました。
わかな=7 わかな=8 ちはる=3 まきこ=2 まきこ=1 ちはる=2 わかな=7
これを誰が何点獲得したのか集計するのが今回のプログラムです。辞書型変数+反復で集計すると以下のようになります。
これを実行すると「{"わかな":22,"ちはる":5,"まきこ":3}」のように結果が表示されます。
まず(*1)の反復構文でデータを反復します。ここではデータを改行で区切っているので、配列変数を反復文で繰り返し処理します。繰り返し行う反復文では、各配列要素を「=」で区切ります。なぜなら反復されるデータは「名前=点数」と「=」で区切られているからです。
そして、大切な点ですが(*2)の部分で辞書型変数にキーが存在するか確認します。存在しない場合は指定の名前のキーを0に初期化します。そして、(*3)で辞書型変数を使って点数を加算します。
なお、辞書型変数自体を繰り返し処理することもできます。先ほどのアイドルの得票数を装飾して表示するには以下のように記述します。
このように、辞書型変数の値を分かりやすく表示する場合にも、反復文が役立ちます。
自由にプログラムを書いて動作を試してみよう!
お疲れ様でした。基礎編はここまでです。