- Python と「共通テスト用プログラム表記」の対応表 ― 読み替えのコツ
- まちがえやすい3つの差分(くり返しの終わりの値・÷・見た目のちがい)
- トレース(プログラムを手で追う)練習
- 本番形式のミニ模試(空欄うめ)と、答えを自分で検証するやり方
これまでと少しちがい、「試験の表記で読む → Pythonに翻訳する → 実行して確かめる」をくり返します。自分の答えが合っているかを、自分の翻訳と実行で検証できるのがこの章の練習法です。
STEP 1見比べる ― 対応表
共通テストのプログラミング問題は、Pythonではなく「共通テスト用プログラム表記」という日本語まじりの表記で出題されます。でも心配はいりません。順次・分岐・反復・配列という設計はPythonとそっくりで、下の対応表のとおり読み替えるだけです。しかも、記号や関数の意味は毎回問題の中で説明されます。暗記ではなく「読み替えの練習」がそのまま得点になります。
| やりたいこと | Python(このサイト) | 共通テストの表記 |
|---|---|---|
| 表示する | print('合計は', goukei) | 表示する("合計は", goukei) |
| 代入 | x = 3 | x = 3 (同じ!) |
| わり算 | 17 / 5 → 3.4 | 17 / 5 (同じ) |
| 商とあまり | 17 // 5 → 317 % 5 → 2 | 17 ÷ 5 → 3 (÷が「商」)17 % 5 → 2 (同じ) |
| くり返し | for i in range(5):iは0〜4。5は含まない | i を 0 から 4 まで 1 ずつ増やしながら繰り返す:4を含む |
| もし〜なら | if x >= 60:elif x >= 30:else: | もし x >= 60 ならば:そうでなくもし x >= 30 ならば:そうでなければ:※「そうでなくもし」は情報Ⅰではまだ出題例がありません |
| くらべる | == != < > <= >= | まったく同じ。毎回、問題文に「== は両辺が等しいときに真」と説明がつく |
| かつ・または | and、or | 英語のまま同じ。意味は毎回、問題文に説明がつく |
| 入力 | n = int(input())s = input() | n =【整数を入力】s =【文字列を入力】 |
| 配列 | tokuten = [80, 92] | Tokuten = [80, 92]配列名は先頭が大文字。添字は0から始まる年と1から始まる年があるので、問題文の最初で必ず確認する |
| 関数 | len(a)、random.randint(1, 6) | 要素数(Tokuten)、乱数(1, 6) のような日本語名。使い方は問題文の説明枠に毎回書いてある※ 乱数() は情報Ⅰではまだ出題例がありません |
字下げ(インデント)が「くり返しの中」「もしの中」を表すルールも同じです。試験の紙面では各行に (1) (2) のような行番号がつき、字下げの範囲が線で示されることもありますが、意味は今まで学んだとおりです。
例題 1
まずは1つ、読み替えを体験しましょう。次の「試験の表記」のプログラムを——
Pythonに翻訳すると、こうなります。実行して、第5章でやった「合計の走査」と同じものだと確かめてください。
STEP 2差がつく3か所 ― 翻訳ドリル
対応表のほとんどは「見ればわかる」読み替えですが、まちがいが多いのは決まって3か所です。1つずつ、翻訳の練習で体にしみこませましょう。
差分1 くり返しの「終わりの値」が含まれる
最重要ポイントです。試験の表記の「i を 1 から 4 まで」は4を含む(1, 2, 3, 4 の4回)。Pythonの range(1, 4) は4を含まない(1, 2, 3 の3回)。だから翻訳するときは終わりの値に1を足して range(1, 5) と書く必要があります。
次の試験表記のプログラムをPythonに翻訳します。for文の1行を書き加えなさい。
解答例を見る(まず自分で書いてから開きましょう)
kaisu = 0 for i in range(1, 5): kaisu = kaisu + i print(kaisu)1+2+3+4=10 です。もし
range(1, 4) と書くと6になってしまいます。「〜まで、は含む。rangeは含まない」——この章でいちばん大事な1行です。
差分2 「÷」は商(Pythonの //)
試験の表記の ÷ は「商」、つまりPythonの // です。ふつうのわり算は試験でも /、あまりは試験でも %。第2章の「商とあまり」がここで効いてきます。
次は、17を5で割ったときの商とあまりを出す試験表記のプログラムです。これをPythonに翻訳します。2行を書き加えなさい。
解答例を見る(まず自分で書いてから開きましょう)
shou = 17 // 5 nokori = 17 % 5 print(shou, 'あまり', nokori)
÷ を / と訳すと 3.4 になり、答えがずれます。÷を見たら //、と条件反射にしておきましょう。
差分3 見た目のちがい(表示する・配列名・日本語の関数)
残りは「見た目」の差です。表示する( ) は print( )、先頭大文字の配列名 Namae はPythonでは小文字 namae でかまいません。要素数( ) のような日本語の関数が出てきたら、問題文の説明枠を読んで len( ) のような知っている道具に置き換えます——第6章STEP2でやった「説明を読んで使う」練習そのものです。
仕上げに、次のプログラム全体を自分で考えてPythonに翻訳しなさい。
解答例を見る(まず自分で書いてから開きましょう)
namae = ['あさひ', 'つばさ'] for i in range(2): print(namae[i], 'さん')「0から1まで」は2回なので
range(2)。「終わりの値」と「見た目のちがい」——2つの差分が入った翻訳でした。ここまでできれば読み替えは合格です。
エラー例 ― エラーが出ないのに答えがちがう!
この章のこわさは、これまでとちがってエラーメッセージが出ないことです。翻訳をまちがえても、プログラムは動いて「ちがう答え」を出します。わざとまちがえて、事故の現場を見ておきましょう。
エラー例 1 終わりの値をそのまま range に書いた
やってみよう 7-1 と同じ「1から4まで」の合計を、range(1, 4) と訳してしまいました。正しい答えは10です。
何が起きたかを見る(実行してから開くこと)
range(1, 5) に直しましょう。
エラー例 2 ÷ を / と訳した
「17 ÷ 5」(商なので正解は3)を、そのまま / で訳してしまいました。
何が起きたかを見る(実行してから開くこと)
÷ は //(商)——差がつくのはいつもここです。
STEP 3トレース道場 ― 手で追う
共通テストで直接問われるのは「読む」力です。でも、その読む力は、自分で書いてきた経験からしか育ちません。その中心がトレース——1行ずつ実行したつもりになって、変数の値の変化を表に記録していく作業です。第4章で使ったトレース表を、今度は試験の表記で使います。
例題 2
次のプログラムは、配列の中の奇数だけを合計します。下のトレース表の「?」を、紙の上で(または頭の中で)うめてから、表の下の答え合わせに進んでください。
| i | Kazu[i] | 奇数? | goukei |
|---|---|---|---|
| (始まる前) | ― | ― | 0 |
| 0 | 3 | ○ | 3 |
| 1 | 1 | ○ | ? |
| 2 | 4 | ? | ? |
| 3 | ? | ? | ? |
| 4 | ? | ? | ? |
トレース表の答えを見る(自分でうめてから開くこと)
本当に10になるか、Python訳を実行して確かめましょう。
次のプログラムは、となりどうしの差のいちばん大きいものをさがします(第5章STEP 6の [i-1] の技です)。まず紙でトレースして表示される値を予想し、それからPythonに自分で考えて翻訳・実行して、予想と合うか確かめなさい。
解答例を見る(まず自分で書いてから開きましょう)
data = [2, 5, 3, 6]
saidai = 0
for i in range(1, 4):
if data[i] - data[i-1] > saidai:
saidai = data[i] - data[i-1]
print(saidai)
差は順に 3、-2、3。最大は 3 です。「1から3まで」なので range(1, 4)——差分1がここでも登場しました。
STEP 4ミニ模試 ― 空欄をうめる
本番の問題は「プログラムの空欄に入るものを選ぶ」形式です。ここでは本番風の小問を2つ。答えを決めてから、Pythonに翻訳・実行して自分で検証する——これがこのサイト流の模試です。
3つの商品の値段の平均を求めるプログラムである。空欄ア・イに入るものを選び、Python訳を完成させて確かめなさい。
アの選択肢:⓪ 2 ① 3 ② 4
イの選択肢:⓪ Nedan ① Nedan[i] ② i
解答を見る(実行して検証してから開くこと)
nedan = [120, 80, 220]
goukei = 0
for i in range(3):
goukei = goukei + nedan[i]
heikin = goukei / 3
print('平均は', heikin)
要素は3つ、添字は0〜2なので「2まで」(2を含んで3回)。もし①の3を選ぶと4回まわって配列の外に出てしまいます——エラー例1の逆パターンですね。
生徒6人の所属クラス(0組・1組・2組)から、各クラスの人数を数えるプログラムである。空欄ウに入るものを選び、Python訳を完成させて確かめなさい。
ウの選択肢:⓪ i ① Kumi[i] ② Ninzu[i]
解答を見る(実行して検証してから開くこと)
kumi = [1, 0, 2, 1, 1, 0] ninzu = [0, 0, 0] for i in range(6): ninzu[kumi[i]] = ninzu[kumi[i]] + 1 print(ninzu)第5章の問5-5とまったく同じ「記録のパターン」でした。試験の表記になっても、中身は知っているパターン——これが実感できたら、この章は合格です。
過去問への橋渡し
① まず全体をながめて「何を計算する話か」をつかむ(1行目から読み始めない)
② 空欄の行だけを見ず、前後の行とセットで読む
③ 決めた答えは、頭の中でトレースして(家ではPythonに翻訳・実行して)確かめる
自由実行スペース
思いついたことを自由に試すための場所です。過去問で見かけた試験表記のプログラムを、ここでPythonに翻訳して動かしてみるのがおすすめです。