コンピュータ演習II 第06回 ドリル(授業中に解いて提出)¶
この問題集は、授業中に、解説を聞きながら自分の手を動かして解く 練習です。第06回の教材で学んだ for 文の基本、合計・カウント、最大値・最小値 を、各節 1〜3 問ずつ練習します。
各問は「好きな値で入力を作り、こう処理してください」という形です。入力の値は自分で自由に決めてかまいません。
進め方は次のとおりです。
- 配布の 解答用テンプレート
2xBxxxxx_06_drill.ipynbを Colab で開き、各問題の「入力の作り方」に従って自分で入力を作り、その下に処理を書いて実行してください。 - 各問に 入力例と出力例 を載せています。イメージがつかめないときは、まず入力例のとおりに動かしてから、自分の値に変えてください。
- いくつかの問題には ヒントのフローチャート を載せています。まず流れをつかんでから、それを Python に翻訳して書いてください。
- できたら、テンプレートを .py 形式でダウンロードして提出 してください。答え合わせはしません。自分で入力を決めて、思ったとおりに動くかを確かめることが目的です。
- わからなくなったら、第06回の教材を見返してかまいません。答えを写すのではなく、書き方を思い出して自分で書く ことが大切です。
なお、この演習では Colab のコード生成(生成AI の補完)は使わないでください。自分でプログラムを書いて、読めるようになることが目的です。
1. for 文の基本¶
問題 1: for 文で計算結果を並べる¶
好きな整数 n を決めてください。for 文を使って、(i + 1) * 2 の値を i = 0 から n - 1 まで、1 行ずつ出力してください(2, 4, 6, ... と並びます)。
入力の作り方:
n = 好きな整数
入力例:
n = 4
出力例(入力例のとき):
2
4
6
8
これは例です。自分で決めた値で作ってかまいません(その場合、出力は例とは変わります)。
考えるポイント: range(0, n) の i は 0 から始まるのに、なぜ i + 1 を使っているのでしょうか。i をそのまま2 倍すると、最初の行はどうなるか確かめてください。
ヒント(フローチャート):
問題 2: リストの全要素を出力する¶
好きな値を5 個入れたリストを作ってください。for 文を使って、range(0, len(リスト)) の形で、全要素を1 行ずつ 出力してください。
入力の作り方:
好きな変数名 = [好きな値を5 個]
入力例:
numbers = [3, 8, 15, 42, 7]
出力例(入力例のとき):
3
8
15
42
7
これは例です。自分で決めた値で作ってかまいません(その場合、出力は例とは変わります)。
考えるポイント: リストの要素数を range(0, 5) のように直接書かず len を使うと、どんな利点があるでしょうか(要素を増減させて試してみましょう)。
ヒント(フローチャート):
2. 合計と個数¶
問題 3: 全要素の積を求める¶
好きな整数を5 個入れたリストを作ってください。for 文を使って、全要素の積(すべて掛け合わせた値)を出力してください。
入力の作り方:
好きな変数名 = [好きな整数を5 個]
入力例:
values = [2, 3, 1, 4, 2]
出力例(入力例のとき):
48
これは例です。自分で決めた値で作ってかまいません(その場合、出力は例とは変わります)。
考えるポイント: 合計を求めるときは total = 0 から始めますが、積を求めるときは total = 1 から始めます。なぜでしょうか(total = 0 のままだとどうなるか、試してみてください)。
ヒント(フローチャート):
問題 4: 条件に合う要素を数える¶
好きな整数を5 個入れたリストと、好きな整数 x を決めてください。for 文と if 文を使って、x より小さい要素の個数 を出力してください。
入力の作り方:
好きな変数名 = [好きな整数を5 個]
x = 好きな整数
入力例:
values = [7, 2, 9, 4, 5]
x = 6
出力例(入力例のとき):
3
これは例です。自分で決めた値で作ってかまいません(その場合、出力は例とは変わります)。
考えるポイント: 「x より小さい」という条件は < と <= のどちらで書けばよいでしょうか。境界の値(values[i] が x と等しいとき)で確かめてください。
ヒント(フローチャート):
問題 5: 条件に合う要素の合計¶
好きな整数を5 個入れたリストを作ってください。for 文と if 文を使って、偶数の要素だけの合計 を出力してください。
入力の作り方:
好きな変数名 = [好きな整数を5 個]
入力例:
values = [7, 2, 9, 4, 5]
出力例(入力例のとき):
6
これは例です。自分で決めた値で作ってかまいません(その場合、出力は例とは変わります)。
考えるポイント: 偶数かどうかは、% を使ってどんな条件式で判定できるでしょうか。
ヒント(フローチャート):
3. 最大・最小¶
問題 6: 最小値を求める¶
好きな整数を5 個入れたリストを作ってください。for 文を使って、最小値 を出力してください。教材3.4 節の最大値の求め方(先頭を暫定値にして更新する方法)を参考に、更新の向きを逆にしてください。
入力の作り方:
好きな変数名 = [好きな整数を5 個]
入力例:
values = [7, 2, 9, 4, 5]
出力例(入力例のとき):
2
これは例です。自分で決めた値で作ってかまいません(その場合、出力は例とは変わります)。
考えるポイント: 最大値を求めるときは「暫定値より大きければ更新」でしたが、最小値を求めるときはどう変えればよいでしょうか。
ヒント(フローチャート):
まとめ¶
この回のドリルでは、for 文とリストを使った代表的なパターンを練習しました。次のことを確認しておきましょう。
- for 文の基本:
for i in range(0, n):で、決まった回数だけ処理を繰り返せる。 - リストの全要素の処理:
range(0, len(リスト))を使うと、要素数に左右されない。 - 合計・積などの累積: 変数を1 つ用意して、繰り返しのたびに更新する。合計は
0、積は1から始める。 - カウント・条件付き合計: for 文の中に if 文を入れ、条件に合ったときだけ更新する。
- 最大値・最小値: 先頭の要素を暫定値にして、より大きい(小さい)要素が見つかったら更新する。
授業後の 課題 では、同じ要領のパターンを Flowchart Maker で組んで、.pflow ファイルを提出します。ここで図とコードの対応に慣れておきましょう。