PythonOne ―― 高校情報ⅠのためのPythonオンライン学習環境

リスト② リストと繰り返し(合計値・最小値・最大値・探索・数え上げ・全部)

リストと for 文などの繰り返しを組み合わせることで、様々なプログラムを作成できます。よくあるパターンを紹介します。

合計値

リストの合計値の場所を求めるプログラムを考えましょう。

サンプルプログラム

プログラム

入力欄
 
出力欄
3
3 7 2
実行ボタンを押してください
5
100 200 300 400 500
実行ボタンを押してください
4
10 20 30 40
実行ボタンを押してください
リストの合計値を求めるプログラムです。最初、変数 goukei0 で初期化しておきます。for 文でリスト a の各要素 a[i] に順番にアクセスし、その値を goukei に加算しています。ループが終わったときには goukei にリストの合計値が入っています。

最小値・最大値

リストの最小値・最大値の場所を求めるプログラムを考えましょう。

サンプルプログラム

プログラム

入力欄
 
出力欄
3
3 7 2
実行ボタンを押してください
5
100 200 300 400 500
実行ボタンを押してください
4
10 20 30 40
実行ボタンを押してください
リストの最小値を求めるプログラムです。最初、変数 saishochi をリストの先頭の値 a[0] で初期化しておきます。for 文でリスト a の各要素 a[i] に順番にアクセスし、もしその値が saishochi より小さければ、saishochi を上書きします。ループが終わったときには saishochi にリストの最小値が入っています。

55 行目の不等号を逆向きにすると、最大値も求められます。

最小値・最大値の場所

リストの最小値・最大値の場所(添え字)を求めるプログラムを考えましょう。

サンプルプログラム

プログラム

入力欄
 
出力欄
3
3 7 2
実行ボタンを押してください
5
100 200 300 400 500
実行ボタンを押してください
4
10 20 30 40
実行ボタンを押してください
リストの最小値の場所(添え字)を求めるプログラムです。最初、変数 basho をリストの先頭を表す 0 で初期化しておきます。for 文でリスト a の各要素 a[i] に順番にアクセスし、もしその値が a[basho] より小さければ、basho を上書きします。ループが終わったときには basho にリストの最小値の場所が入っています。

55 行目の不等号を逆向きにすると、最大値の場所も求められます。

探索

リストにある値が含まれているか探索するプログラムを考えましょう。

サンプルプログラム

プログラム

入力欄
 
出力欄
3
3 7 2
7
実行ボタンを押してください
5
100 200 300 400 500
400
実行ボタンを押してください
4
10 20 30 40
50
実行ボタンを押してください
入力欄の 11 行目にはリストの要素数 n が、22 行目には半角スペース区切りで整数のリスト a の各要素が、33 行目には探索したい値 x が書かれています。
リスト a に値 x が含まれているかを判定し、含まれている場合はその場所を出力するプログラムです。最初、変数 basho をリスト外を表す -1 で初期化しておきます。for 文でリスト a の各要素 a[i] に順番にアクセスし、もしその値が x と等しければ、basho を上書きします。ループが終わったとき、値 x が見つからなかった場合は初期値の -1 のままになっています。値 x が見つかった場合は、最後に見つかった場所で basho の値が上書きされています。

数え上げ

リストのうち条件に合うものの個数を数え上げるプログラムを考えましょう。

サンプルプログラム

プログラム

入力欄
 
出力欄
3
3 -7 2
7
実行ボタンを押してください
5
100 -200 300 400 -500
400
実行ボタンを押してください
4
10 -20 30 -40
50
実行ボタンを押してください
リスト a に正の数が何個含まれているかを求めるプログラムです。最初、変数 kazu0 で初期化しておきます。for 文でリスト a の各要素 a[i] に順番にアクセスし、もしその値が正であれば、kazu11 加算します。ループが終わったときには kazu に正の数の個数が入っています。

条件式 a[i] > 0 を書き換えることで、他にも様々な条件を満たす値の個数を求める(数え上げる)ことができます。

全部

リストの全部の要素が条件を満たしているか判定するプログラムを考えましょう。

サンプルプログラム

プログラム

入力欄
 
出力欄
3
3 -7 2
7
実行ボタンを押してください
5
100 -200 300 400 -500
400
実行ボタンを押してください
4
10 -20 30 -40
50
実行ボタンを押してください
3
0 0 0
実行ボタンを押してください
リスト a の全部の要素がゼロかを判定するプログラムです。最初、変数 answer を「全部ゼロです」で初期化しておきます。for 文でリスト a の各要素 a[i] に順番にアクセスし、11 つでもゼロでない値が見つかれば、変数 answer を「ゼロではない値が含まれています」に上書きします。ループが終わるまで一度も上書きが発生しなければ全部ゼロであることが分かります。

条件式 a[i] != 0 を書き換えることで、他にも様々な条件で全部の要素が条件を満たしているかを判定することができます。

クイズ

次のクイズに取り組んでみましょう。ただし、入力欄を読み取って変数に代入するプログラムはもとから書いてあります。その続きを自分で書いてみましょう。

クイズ 🔴

n 人の生徒がテストを受けました。各生徒の得点がリスト tokuten に入っています。平均点を出力するプログラムを作成してください。

プログラム

入力欄
 
出力欄
正答
6
63 100 71 100 89 76
実行ボタンを押してください
(正答を取得中)
5
50 90 70 80 80
実行ボタンを押してください
(正答を取得中)
9
40 60 80 100 20 50 70 90 30
実行ボタンを押してください
(正答を取得中)

クイズ 🔴

n 人の生徒がテストを受けました。各生徒の得点がリスト tokuten に入っています。最高点を出力するプログラムを作成してください。

プログラム

入力欄
 
出力欄
正答
6
63 100 71 100 89 76
実行ボタンを押してください
(正答を取得中)
5
50 90 70 80 80
実行ボタンを押してください
(正答を取得中)
9
40 60 80 100 20 50 70 90 30
実行ボタンを押してください
(正答を取得中)

クイズ 🔴

n 人の生徒がテストを受けました。各生徒の得点がリスト tokuten に入っています。100100 点を取った人数を出力するプログラムを作成してください。

プログラム

入力欄
 
出力欄
正答
6
63 100 71 100 89 76
実行ボタンを押してください
(正答を取得中)
5
50 90 70 80 80
実行ボタンを押してください
(正答を取得中)
9
40 60 80 100 20 50 70 90 30
実行ボタンを押してください
(正答を取得中)

クイズ 🔴

とあるゲームで遊んでいます。今、n 体の敵モンスターがいて、各モンスターの体力がリスト tairyoku に入っています。あなたは敵モンスターに 11 回ずつ攻撃します。通常攻撃では tsujo ダメージ、11 回だけ使える必殺攻撃では \infty ダメージ与えて必ず倒すことができます。すべてのモンスターを倒す(体力を 00 以下にする)ことができるか判定し、「すべてのモンスターを倒せます」または「倒せないモンスターがいます」と出力するプログラムを作成してください。

プログラム

入力欄
 
出力欄
正答
6
63 100 71 100 89 76
90
実行ボタンを押してください
(正答を取得中)
5
50 90 70 80 80
85
実行ボタンを押してください
(正答を取得中)
9
40 60 80 100 20 50 70 90 30
150
実行ボタンを押してください
(正答を取得中)