プログラミング第12回 配列変数・辞書型変数の応用
前回の問題の解答
問題1の解答です。
” “などの半角表記ではなく、「」などの全角表記を使っています。
問題2の解答です。
こちらは半角表記にしています。
今回学ぶこと
・ 反復
・ カッコについて
・ 配列変数と辞書型変数を組み合わせる
・ 配列変数+辞書型変数で数値の計算をプログラムする
反復
まず、前回の復習です。「辞書キー列挙」関数を見直してみましょう。
辞書型変数の「キー」の部分は「辞書キー列挙」関数を使えば「キー」の部分は取り出せましたね。
次に、「キー」の部分だけではなく「値」の部分も取り出してみます。
「反復」関数を使います。
「(辞書型変数の名前)を反復」で辞書型変数の各要素が変数「対象」の部分に順に代入されます。
「 」は ” ” に置き換えても大丈夫です。
「反復」の処理に後に何も処理を入力しないならば「ここまで」はなくても大丈夫です。つまり、この例のように「反復」の「ここまで」が一番下の行にくるときは省略していいということです。
ただ、後ろに処理を加えることもあるので「ここまで」を付けておく方が無難です。
もちろん、キーの部分と値の部分はそれぞれ表示することもできます。
「反復」関数は配列変数にも使うことができます。
配列変数にはキーはないので、辞書型変数よりはあっさりしています。
ちなみに、[対象] の [ ] はなくても動きます。
カッコについて
カッコがいろいろ出てきてややこしいと思いますので簡単にまとめておきます。
まず、文字列(変数などではなくただの文字として扱う)を入力する場合は「 」または ” ” を使います。
「 」は全角表記、” ” は半角表記でどちらも同じものです。
変数を入力する場合は { } を使います。
例のように、[ ] や ” ” を使うと変数として認識されません。
配列変数では 変数名=[ ] の形で表し、[ ]を使います。
辞書型変数では 変数名={ } の形で表し、{ }を使います。
配列変数とは違って、要素を呼び出すときは難しいです。要素の呼び出しは 変数名[“キー”] の形を使います。
辞書型変数は要素の呼び出し方のカッコがわかりにくいので、次のような全角表記での呼び出し方もあります。
全角表記の方が感覚的にはわかりやすいですね。
配列変数と辞書型変数を組み合わせる
ここまでが準備運動で、ここから今回のメインに入ります。
配列変数と辞書型変数を組み合わせて使っていきます。
東南アジア11か国の「国名」「首都」「人口(単位は万人)」を配列変数と辞書型変数を組み合わせて作ります。
まず、東南アジア=[ ] で配列変数を作り、その中に { } で辞書型変数を入れます。
配列変数の要素の数を確認すると11と表示されます。つまり、辞書型変数{ }のそれぞれが配列変数の要素として認識されているわけです。
人口の部分は数値なので ” ” を付けなくても大丈夫です。
次に、「反復」を使い欲しいデータを取り出します。「対象」には各要素が順に代入されていきます。
配列変数の最初の要素は1番目ではなく、0番目でしたね。つまり、インドネシアについてのデータは配列変数の0番目の要素となり、東ティモールについてのデータは10番目の要素となります。
「反復」のところがわかりにくいかもしれないので、具体的なイメージを見ていきます。要素の数は省略して4つにしています。
「反復」を使うと自動的に処理されるので何が起こっているかわかりにくいのですが、対象[“国名”] と入力するだけで、配列変数の各要素の [“国名”] が入力されたことになります。
さらに、変数に代入することですべての要素の任意のデータを取り出すことができます。
東南アジア各国の国名と首都を表示するプログラム。
東南アジア各国の国名と人口を表示するプログラム。
配列変数+辞書型変数で数値の計算をプログラムする
上の東南アジア各国の国名と人口を表示するプログラムから東南アジアの人口の合計を計算してみます。
これは第6回の繰り返しの制御構文で学習した「和=和+〇」の形を使えば簡単に作れますね。
数字の部分が桁が多くなって見にくいので修正してみます。
第5回で学んだ「整数変換」と「%」を使って「〇億〇万人」と見やすく変更しました。
「もし」の制御構文を使って、人口が1億人以上の国だけを表示するようにします。
「もし~」の制御構文は第5回で学習しましたね。
「ここまで」については第7回を参照してください。
それでは今回の問題です。
問題
次のプログラムの空欄を埋めてプログラムを完成させてください。
プログラムが長くなるので見やすくなるように「関数の定義」を使っています(第9回参照)。
「平均処理」で平均点を計算し、「点数チェック」で平均点より上か下かを判断しそれぞれコメントが出るようにしています。
コメントの部分はアレンジしてもらってもいいです。例えば、平均点を下回った場合に「まだまだ伸びしろがある。がんばろう!」とかでもいいですね。
生徒一覧=[ ] の部分は入力するのが面倒だと思いますので、欄外に入力データを貼っておきます。コピーして使ってください。
ただ、スマホの機種によってはコピーでは上手く動かないことがあるのでその場合は、カッコ([],{})などの記号の部分を消して直接入力してください。それでもダメな場合はすべて直接入力してください。
生徒一覧=[
{“名前”:”佐藤”, “点数”:86},
{“名前”:”鈴木”, “点数”:54},
{“名前”:”高橋”, “点数”:72},
{“名前”:”田中”, “点数”:46},
{“名前”:”伊藤”, “点数”:67},
{“名前”:”渡辺”, “点数”:59},
{“名前”:”山本”, “点数”:93},
{“名前”:”中村”, “点数”:38},
{“名前”:”小林”, “点数”:63},
{“名前”:”加藤”, “点数”:58}
]