コンピュータ演習II 第05回 ドリル(授業中に解いて提出)¶
この問題集は、授業中に、解説を聞きながら自分の手を動かして解く 練習です。第05回の教材で学んだ リストの操作(作成・アクセス・上書き・追加・長さ)を、各節 2 問ずつ練習します。
各問は フローチャート で与えます。図を読んで流れをつかんでから、それを Python に翻訳して 書いてください。「好きな値」のところは、自分で自由に値を決めてかまいません。
進め方は次のとおりです。
- 配布の 解答用テンプレート
2xBxxxxx_05_drill.ipynbを Colab で開き、各問題のフローチャートを Python に翻訳して実行してください。 - 各問に 入力例と出力例 を載せています。イメージがつかめないときは、まず入力例のとおりに動かしてから、自分の値に変えてください。
- できたら、テンプレートを .py 形式でダウンロードして提出 してください。答え合わせはしません。自分で値を決めて、思ったとおりに動くかを確かめることが目的です。
- わからなくなったら、第05回の教材を見返してかまいません。答えを写すのではなく、書き方を思い出して自分で書く ことが大切です。
なお、この演習では Colab のコード生成(生成AI の補完)は使わないでください。自分でプログラムを書いて、読めるようになることが目的です。
1. リストを作る・アクセスする¶
問題 1: リストの最後の要素を求める¶
好きな値を5 個決めて、自分のリストを作ってください。下のフローチャートのとおり、len() を使って 最後の要素(リスト[len(リスト) - 1])を表示してください。
入力の作り方:
values = [好きな値を5 個]
入力例:
values = [10, 20, 30, 40, 50]
出力例(入力例のとき):
50
これは例です。自分で決めた値で作ってかまいません(その場合、出力は例とは変わります)。
考えるポイント: 最後の要素を values[5] ではなく values[len(values) - 1] で求めるのはなぜでしょうか(インデックスは 0 から始まることを思い出しましょう)。
ヒント(フローチャート):
問題 2: 1 番目と3 番目の要素の和¶
問題1 と同じリストについて、下のフローチャートのとおり、1 番目と3 番目の要素の和 を表示してください。
入力の作り方:
values = [好きな値を5 個]
入力例:
values = [10, 20, 30, 40, 50]
出力例(入力例のとき):
60
(1 番目の20 と3 番目の40 の和で60 になります。)これは例です。自分で決めた値で作ってかまいません。
考えるポイント: 「1 番目」は先頭から数えて 2 つ目の値です。インデックスは 0 番目・1 番目・2 番目・…と数えることを、print(values) などで確認しながら進めるとよいでしょう。
ヒント(フローチャート):
2. 上書きと追加¶
問題 3: 先頭の要素を末尾の値で上書きする¶
同じリストについて、下のフローチャートのとおり、先頭の要素を、末尾の要素の値で上書き してから、リスト全体を表示してください。
入力の作り方:
values = [好きな値を5 個]
入力例:
values = [10, 20, 30, 40, 50]
出力例(入力例のとき):
[50, 20, 30, 40, 50]
これは例です。自分で決めた値で作ってかまいません。
考えるポイント: values[0] を書き換えても、values[len(values) - 1] の指す位置や値は変わりません。これはなぜでしょうか(上書き前のvalues[0] と、末尾の値がそれぞれ別の場所にあることを確認しましょう)。
ヒント(フローチャート):
問題 4: 空のリストに追加する¶
空のリストから始めて、下のフローチャートのとおり、好きな値を2 個append してください。そのあと、リスト全体と長さを表示してください。
入力の作り方:
nums = []
好きな値を2 個決める
入力例:
nums = []
(追加する値) 7, 14
出力例(入力例のとき):
[7, 14]
2
これは例です。自分で決めた値で作ってかまいません。
考えるポイント: 空のリストにイコール(=)で直接値を入れることはできません(nums[0] = 7 はエラーになります)。要素を新しく増やすときに使う命令は何だったでしょうか。
ヒント(フローチャート):
3. if と組み合わせる¶
問題 5: 間接インデックス¶
好きな整数を5 個決めて、自分のリストを作ってください。下のフローチャートのとおり、0 番目の要素を5 で割った余りを新しいインデックスとして、その位置の要素を表示してください。
入力の作り方:
values = [好きな整数を5 個]
入力例:
values = [7, 20, 30, 40, 50]
出力例(入力例のとき):
30
(0 番目の要素7 を5 で割った余りは2 なので、values[2] の30 を表示します。)これは例です。自分で決めた値で作ってかまいません。
考えるポイント: インデックスに使うvalues[0] % 5 の結果が、必ず0〜4 におさまるのはなぜでしょうか(リストの長さと、余り% の性質を思い出しましょう)。
ヒント(フローチャート):
問題 6: 要素の値で分岐する¶
好きな整数を5 個決めて、自分のリストを作ってください。下のフローチャートのとおり、2 番目の要素が50 以上ならhigh、そうでなければlow と表示してください。
入力の作り方:
values = [好きな整数を5 個]
入力例:
values = [10, 20, 30, 40, 50]
出力例(入力例のとき):
low
(2 番目の要素は30 で、50 未満なのでlow になります。)これは例です。自分で決めた値で作ってかまいません(values[2] が50 以上ならhigh になります)。
考えるポイント: if の条件で比べているのはvalues[2] という 要素の値 です。リストどうしを比べているのではないことに注意しましょう。
ヒント(フローチャート):
まとめ¶
この回のドリルでは、リストの操作をフローチャートから Python に翻訳する練習をしました。次のことを確認しておきましょう。
- リストの要素は 0 から始まるインデックス でアクセスする。最後の要素は
リスト[len(リスト) - 1]で求められる。 - イコール(
=)は すでにある要素の上書き、appendは 新しい要素の追加。この使い分けを間違えない。 - インデックスには、数値そのものだけでなく、
values[0] % 5のような 計算結果や変数 も使える。 if...elseは、リストの要素の値を条件にして分岐できる。
授業後の 課題 では、同じ要領でフローチャートを Flowchart Maker で組んで、.pflow ファイルを提出します。ここで図とコードの対応に慣れておきましょう。