この章のキーワード
- Pythonの特徴
- 変数
- 関数
- 数字と文字列
- if文
- else
この章のキーワード
Thonnyにこのように入力し、test.py
という名前で保存し、実行してみましょう。
Thonnyをまだインストールしてない人はThonny(ソニー)のインストール を参照してください。
print("こんにちは")
print
は文字を表示させるという命令です。 関数(かんすう) とも言います。今回は「こんにちは」という文字列を表示させています。 "こんにちは"
というふうに”(ダブルクオート)で囲っていることに注目してください。プログラミングでは、文字はふつうこのように特別扱いします。数字の場合は print(100)
のようにそのまま書けます。
print
の中に数字などいろいろなものを入れて表示させてみよう
ただ文字を表示させるだけではプログラムっぽくありませんので、生まれた年から現在の年齢を計算して表示するプログラムを作ってみましょう。
year = input("生まれた年は?")nenrei = 2024 - int(year)print(nenrei)
これを実行すると、生まれた年を入力するようにうながされます。生まれた年を入力すると、2024年での年齢が表示されます。(現在が2024年ではない場合は、2行目の2024を現在の西暦に書き換えて実行してみましょう)
最初の行から見ていきましょう。
year = input("生まれた年は?")
input()
は、ユーザの入力(input)を待つ関数です。ユーザが入力した文字が返されます。 year
は 変数(へんすう) です。データが入る箱のようなものと考えてください。
さて、その関数と変数が入ったこの一行はどういう意味でしょうか?
この行の =
は、算数の=とは違っています。プログラミングの =
は、「同じ」という意味ではありません。プログラミングの =
は 「右側のデータを左側の変数に入れる」 という意味です。
慣れないうちは、下記のように、右から左に矢印があると考えると良いかもしれません。
year ⬅ input("生まれた年は?")
このように、右側のデータを左側の変数に入れることを 代入(だいにゅう) と呼びます。
上の画像ではユーザが”1990”と入力しているので、変数 year
には”1990”という文字のデータが入っています。このような、変数に入っているデータのことを 値(あたい) と呼びます。「代入」と「値」は今後何度も出てきますので憶えておいてください。
次の行では、いよいよ年齢を計算しています。
nenrei = 2024 - int(year)
=
は 代入 をあらわしているので、どうやらこの行では、変数 nenrei
に2024から生まれた年を引いたものを入れていることがわかります。では、 int()
とはなんでしょうか?
さきほど見たように、変数 year
の中身は文字列の”1990”です。なので、この下の例のようにそのまま引くと、エラーになってしまいます。
(失敗例)
nenrei = 2024 - year
そこで、 int()
という関数を使って文字列を数字に変換しています。int(イント)はinteger(インテジャー)の略で、整数という意味です。
最後の行は計算結果を表示しています。数字を表示するだけでは味気ないと思う方は次の「やってみよう2」にチャレンジしてください。
print(nenrei)
nenrei.pyを改良して、数字だけで年齢を出すのではなく、「32歳です」のように「歳です」も表示されるようにしてみましょう。
年齢を聞いて平成生まれかどうかを判定するプログラムを作ってみましょう。
year = int(input("生まれた年は?"))if year > 1988: print("平成生まれです!")
このプログラムを実行すると、1989以上の数字を入力したとき「平成生まれです!」と表示されます。
1行目はなにやら複雑に見えますが、 input()
で入力された”1995”などの文字列を int()
で数字に変換してから変数 year
に代入しています。
year = int(input("生まれた年は?"))
以下のように二行に分けて書くこともできますが、慣れてくるとプログラムを短くできます。
user_input = input("生まれた年は?")year = int(user_input)
2行目と3行目には if文(イフぶん) があります。if文は、「もし~なら」の 条件分岐 に使います。ここでは、yearが1988よりも大きかった場合に print("平成生まれです!")
が実行されます。
if year > 1988: print("平成生まれです!")
ここでのポイントは、if文の行の最後に :(コロン) があることと、その次の行が字下げ(インデント)されていることです。この インデント があることで、if文の条件が当てはまったときにだけ実行される文だということが見てわかりやすくなります。インデントは、スペースまたはタブで入力してください。スペースをいくつ入れるかは決まりはないので自分の見やすいように調節しましょう。
さきほどのheisei.pyでは、平成生まれのときは「平成生まれです!」と表示しましたが、そうではなかった場合になにも表示されませんでした。これを改良するとこうなります。
year = int(input("生まれた年は?"))if year > 1988: print("平成生まれです!")else: print("平成生まれではありません!")
このプログラムを実行すると、1988以下の数字を入力したとき「平成生まれではありません!」と表示されます。
if文は条件にあてはまったときどうするかを書きますが、条件に当てはまらなかった場合についても書くには else
を使います。elseも、終わりには:(セミコロン)をつけて、条件が当てはまらないときに実行する文はインデントしてください。
year = int(input("生まれた年は?"))if year > 1988: print("平成生まれです!")else: print("平成生まれではありません!")
平成生まれだけでなく、令和生まれも判別しましょう。令和をまず先に調べ、令和ではない場合に平成かどうかを調べます。
year = int(input("生まれた年は?"))if year > 2018: print("令和生まれです!")else: if year > 1988: print("平成生まれです!") else: print("令和生まれでも平成生まれでもありません。")
このプログラムを実行すると、2018以上の数字を入れた場合に「令和生まれです!」と表示され、1988よりも大きく2018までの数字を入れた場合に「平成生まれです!」と表示されます。当てはまらない場合は「令和生まれでも平成生まれでもありません。」と表示されます。
if文が連続する部分を見てみましょう。 if year > 2018
に当てはまらなかった場合をさらに if year > 1988
で場合分けしていることに注目してください。if文の中にさらにif文が入ります。こういうものを ネスト と呼びます。ネストした場合、インデントもどんどん深くなっていくことに注意してください。
if year > 2018: print("令和生まれです!")else: if year > 1988: print("平成生まれです!") else: print("令和生まれでも平成生まれでもありません。")
reiwa.pyを改造して、さらに昭和生まれと大正・明治生まれも判定できるようにしてください。