情報Ⅰ プログラミング演習

第1章 変数と代入

この章で学べること
この章のゴール:まずはプログラミングの基礎である「print()を使って画面に表示する方法」と「変数の基本」を身につけて簡単なプログラムを作ってみよう!
この章の進め方
ステップごとに「解説を読む → 例題を実行して出力を確かめる」を繰り返してスモールステップでプログラムを実行すると何が起こるかを確かめてみましょう。例題は自由に書きかえて再実行してかまいません(「最初のコードに戻す」で元に戻せます)。
目次

    STEP 1画面に表示する ― print()

    print() は、カッコの中に書いたものを画面に表示する命令です。文字列(文字の並び)を表示したいときは、'(シングルクォーテーション)または "(ダブルクォーテーション)で囲みます。数値はそのまま書けます。また、カンマ , で区切ると、複数の値を続けて1行に表示できます。

    書き方の例表示される内容
    print(365)365
    print('こんにちは')こんにちは
    print('気温は', 30, '度')気温は 30 度

    例題 1
    ▶︎実行 ボタンを押してみてどのように表示されるのか確かめてみましょう。

    print()を変えると行替えが起こることを確認しましょう。

    また、文字列は'(シングルクォーテーション)や"(ダブルクォーテーション)とで囲わないとエラーが出るので試してみましょう。

    アラン先生
    プログラムは、特別な指示がないかぎり上の行から順番に、一行ずつしか進みません。これを順次構造と呼びます。当たり前に思えるかもしれませんが、その「当たり前」をルールとして決めておくことが大切なんだね。
    やってみよう 1-1

    print() を2回使って、以下のように自己紹介が2行で表示されるプログラムを自分で考えて作りなさい(内容は自分のことに変えてOKです)。

    <実行結果例>こんにちは 高校1年生です
    解答例を見る(まず自分で書いてから開くこと)
    print('こんにちは')
    print('高校1年生です')
    1行につき print() を1つ使います。文字列をクォーテーションで囲めていれば正解です。

    STEP 2値に名前をつける ― 変数

    変数とは、値を入れておく「名前つきの箱」です。name = 'アオイ' と書くと、name という名前の箱に文字列「アオイ」が入ります。箱に入れた値は、print(name) のように変数名を書くだけで取り出して使えます

    name = 'アオイ' name 'アオイ'
    図1 変数は「名前つきの箱」。代入すると値が箱に入る

    変数の名前は半角の英字で始め、意味のわかる名前(namekion など)をつけます。また、行の途中に # を書くと、そこから行末まではコメント(実行時に無視されるメモ)になります。

    例題 2

    どのように表示されるのかを予想してから実行しましょう。また、'アオイ' の中身を自分の名前に書きかえるとどうなるかも試してみましょう。

    アラン先生
    'アオイ' のシングルクォーテーション(' ')を外して実行すると、どんなエラーが出るか試してましょう!最初のうちに「何をすると、どんなエラーが出るのか」をたくさん経験しましょう。恐れずたくさん書くとこが大切ですよ。
    やってみよう 1-2

    変数 iro に好きな色(文字列)を代入し、以下のように表示されるプログラムを自分で考えて作りなさい。

    <実行結果例>好きな色は 青 です
    解答例を見る(まず自分で書いてから開くこと)
    iro = '青'
    print('好きな色は', iro, 'です')
    変数に文字列を入れて、print() のカンマ区切りで取り出せていればOKです。
    ノイマン先生
    いいかね、共通テストでも kingaku(金額)、saichou(最長)のようなローマ字の変数名が使われる。変数名から「何が入っている箱なのか」を読み取ることが問題を解くときのヒントになるんだ。
    ⏱ ここまでで1時間くらいが目安です。つづきは次の時間でもOK(クリアの記録は残っています)。

    STEP 3「=」の本当の意味 ― 代入と上書き

    プログラミングの = は、数学の「等しい」という意味ではありません= は「右側の値を、左側の変数(箱)に入れる」という代入の記号です。

    そして、すでに値が入っている変数に新しく代入すると、前の値は消えて上書きされます。1つの変数が持てる値は、常に1つだけです。

    kion 25 kion = 30 kion 25 30 前の値は消える
    図2 新しく代入すると、前の値は上書きされる

    例題 3

    やってみよう 1-3

    変数 tokui に得意教科を代入して表示し、そのあと別の教科に上書きしてもう一度表示するプログラムを自分で考えて作りなさい。

    <実行結果例>得意教科は 数学 です やっぱり 英語 です
    解答例を見る(まず自分で書いてから開くこと)
    tokui = '数学'
    print('得意教科は', tokui, 'です')
    # ▼ ここに1行書こう tokui = '英語' print('やっぱり', tokui, 'です')
    2回目の代入で前の値が消えて上書きされる、というSTEP 3の内容をそのまま自分の手で確かめる問題でした。

    STEP 4変数を使って計算する ― i = i + 1

    代入の = では、まず右側の式が先に計算され、その結果が左側の変数に入ります。だから数学ではありえない

      i = i + 1 という式も、プログラミングでは「いまの i の値に1を足した結果を、あらためて i に入れ直す」という正しい操作になります。

    i 5 1 i + 1 → 5 + 1 = 6 2 計算結果の 6 を i に入れ直す i = i + 1
    図3 ① 右側を先に計算 → ② 結果を左の変数に入れ直す

    例題 4

    ノイマン先生
    いいかね、共通テストでは「この行が実行されるたびに変数の値はどう変わるか」を表で追いかけるトレースが定番だ。値の変化をメモしながら読むことが大切だ。
    やってみよう 1-4

    変数 score に80を代入し、自己代入を使って15を足してから、以下のように表示されるプログラムを自分で考えて作りなさい(print(95) のように直接書くのは無しです)。

    <実行結果例>今のスコアは 80 点です最終スコアは 95 点です
    解答例を見る(まず自分で書いてから開くこと)
    score = 80
    print('今のスコアは', score, '点です')
    # ▼ ここに1行書こう
    score = score + 15
    print('最終スコアは', score, '点です')
    score = score + 15 は「いまの score に15を足した結果を、score に入れ直す」でしたね。

    エラー例 ― やってしまいがちなエラーを知ろう!

    プログラムを書いていると、必ずエラーに出会います。エラーは「壊れた」の合図ではなく、「ここが読めなかったよ」というPythonからの報告です。報告の読み方はいつも同じで、いちばん最後の行にエラーの種類と理由が書かれています。ここでは、よくあるエラーを3つ、わざと起こしてみましょう。

    エラー例 1 クォーテーションの閉じ忘れ

    文字列の最後の ' が抜けています。まず実行してエラーを出し、メッセージを読んでから、直して再実行してみましょう。

    エラーの読み方を見る(実行してから開くこと)
    最後の行に SyntaxError: unterminated string literal と出ます。SyntaxError(シンタックスエラー)は「文法のまちがい」という意味で、「終わっていない文字列がある=クォーテーションが閉じられていない」と教えてくれています。'こんにちは' と閉じれば直ります。

    エラー例 2 変数名の打ちまちがい

    2行目の変数名が、1行目で作った変数と1文字違っています。

    エラーの読み方を見る(実行してから開くこと)
    NameError: name 'nama' is not defined と出ます。NameError(ネームエラー)は「その名前の変数は知らない」という意味です。作った変数は namae なのに、nama という別の名前を呼んでしまったのが原因です。変数名は1文字違うだけで別物として扱われます。

    エラー例 3 全角スペースの混入

    行の先頭に、見た目ではわかりにくい全角スペースが入っています。日本語入力のままスペースを打つと起きる、やってしまいがちなエラーです。

    エラーの読み方を見る(実行してから開くこと)
    SyntaxError: invalid non-printable character U+3000 と出ます。U+3000 は全角スペースのことで、Pythonは全角スペースを読めません。プログラムは記号もスペースもすべて半角で書き、日本語は文字列(クォーテーションの中)だけに使いましょう。
    アラン先生
    エラーが出ても、大丈夫です。最後の行を読めばエラーの原因の見当はつきます。エラーの種類(SyntaxError、NameError…)と場所(何行目か)をチェックしてあわてず直しましょう。

    演習問題

    問 1-1

    次のプログラムを実行し、「変数」の性質を確認しなさい。

    確認ポイントを見る(実行してから開くこと)
    2回目の代入で、変数 food の中身が「ラーメン」から「パスタ」に上書きされています(図2と同じ動き)。1つの変数が持てる値は常に1つ、という性質を確認してください。
    問 1-2

    次のプログラムを実行し、「変数」と「代入」の性質を確認しなさい。

    確認ポイントを見る(実行してから開くこと)
    i = i + 1 が実行されるたびに、i の値が5→6→7と変化していきます(図3の動き)。この書き方は、繰り返し構造(第4章)で「回数を数える」ためにひんぱんに登場します。
    問 1-3

    変数 name に自分の名前を、変数 age に年齢を代入し、以下の実行結果例のように表示されるプログラムを自分で考えて作りなさい。

    <実行結果例>私の名前は ユキ です 年齢は 16 歳です
    解答例を見る(まず自分で書いてから開くこと)
    name = 'ユキ'
    age = 16
    print('私の名前は', name, 'です')
    print('年齢は', age, '歳です')
    文字列はクォーテーションで囲み、数値はそのまま書きます。print() のカンマ区切りで、文字列と変数を混ぜて表示できていればOKです。
    問 1-4(発展)

    変数 a に3、変数 b に5を代入したあと、2つの変数の中身を入れ替えて、以下のように表示されるプログラムを作りなさい。
    ヒント:そのまま a = b とすると、a に入っていた3が消えてしまいます。もう1つ変数を用意して、3を一時的に避難させておきましょう。

    <実行結果例>a = 5 b = 3
    解答例を見る(まず自分で書いてから開くこと)
    a = 3
    b = 5
    taihi = a
    a = b
    b = taihi
    print('a =', a)
    print('b =', b)
    変数 taihia の値(3)を避難させてから入れ替えるのがポイントです。この「値の入れ替え」は、共通テストでもデータの並べ替えの場面で登場する大切な考え方です。

    自由実行スペース

    思いついたことを自由に試すための場所です。学んだことを使って、好きなプログラムを書いてみましょう。

    ノイマン先生
    ちなみに共通テストのプログラムは日本語まじりの専用表記だがね、代入はPythonと同じ =、表示は 表示する("得点は", point, "点")print() にそっくりだ。ここで学んだことは、そのまま入試で通用するんだ。
    実行環境を準備中…