コンピュータ演習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 ファイルを提出します。ここで図とコードの対応に慣れておきましょう。