食品安全分野で働く人であっても、デジタルリテラシー向上が必要な理由については、以下の記事をご覧ください。
Pythonの基本操作については、以下の記事を読んでください。
今回はPythonを扱う上で超重要な「変数」について学んでいきます。
今回からはより見やすくなるようにするため、Google Colaboratoryの画面ではなく、コードだけを書いていきます。みなさんは、自分のColaboratoryのセルに同じ内容を入力していってください。
変数に数字を代入する
実際にコードを見てみましょう。
下のコードでは、「number」という変数に数値の「100」を代入しています。
下の3行を1つのセルに入力してください。コードに赤や紫色がついていますが、コードを見やすくするためです。入力する際には無視して大丈夫です。
入力後キーボードで「Shift」と「Enter」を押す、または「▶︎」をクリックすると、Pythonが実行されます。
# 変数numberに100を代入
number = 100
print(number)
結果は「100」と表示されます。
100
ここでいくつかポイントがあります。
2行目で「number = 100」としています。このイコールは数学的に等しいということではなく、「number」に「100」を代入するという意味です。数学でも「x = 100」のように、変数に値を代入しますね。
すなわち、「=」は値を代入したいときに使います。
次に1行目に「# 変数numberに100を代入」とあります。Pythonで半角の「#(シャープ)」は特別な意味がある記号です。
行の先頭に#をつけると、その行はコメントとして扱われ、Pythonで処理されません。
なぜ、わざわざコメントを残すのでしょうか?
より複雑なプログラミングを行うようになると、自分でコードを書いておきながら、後で見返してそのコードの目的が何だったのか、忘れてしまうことがよくあります。また、共同で作業をする際には、他の人がコードを見ても、何のためのコードなのかを分かるようにしておくことが重要です。
このような理由により、#で「コードの目的」を書いておきます。
なぜ変数を使うのか
変数が何なのかが分かりました。それでは、なぜ変数を使うのでしょうか。
先ほどの「number = 100」の例でわかるように、「変数」は値を入れておく箱のようなものです。変数に値を格納しておくと、変数を書くだけで値を呼び出して、計算することができます。
また、変数の値を変えたくなったら、変数に格納する値を変えるだけでいいので、人為的ミスがなくなります。
分かりにくいと思うので、具体例を紹介しましょう。
消費税が10%で、リンゴ(150円)、オレンジ(200円)、ブドウ(250円)をそれぞれ1つずつ購入します。合計金額を計算してみましょう。下のコードにある「*」は数学の掛け算(×)を、「+」は数学の足し算(+)を表しています。
# それぞれの商品の値段を計算し合計する(消費税10%)
(150 * 1.1) + (200 * 1.1) + (250 * 1.1)
結果は660円でした。
660.0
もし増税により消費税が20%になったらどうでしょうか。「1.1」を「1.2」に修正しなければなりません。
# それぞれの商品の値段を計算し合計する(消費税20%)
(150 * 1.2) + (200 * 1.2) + (250 * 1.2)
結果は720円となります。
720.0
この例のような短いコードでも、1つの値が変わるだけで、3か所も修正しなければなりません!100行、200行のコードを書いて、修正箇所が30カ所あったら、修正に時間がかかる上に、ミスが生じる恐れがあります。
これをもし変数を使うとどうなるでしょうか。
# 変数taxに消費税を代入
tax = 1.1
# それぞれの商品の値段を計算する
apple = 150 * tax
orange = 200 * tax
grape = 250 * tax
# 合計金額を計算する
total = apple + orange + grape
print(total)
コードとしては少し長くなりましたが、変数を使わない時と同じ計算をしています。
この場合、増税があったとしても、「tax」の値を1つ「1.1」から「1.2」に変えるだけで済みます。また、他に買う物を追加したいときでも、grapeの下に追加していくだけで大丈夫です。
このように、変数を使うことで、変化に柔軟に対応することができます。
変数を使うメリット
- 変数に値を格納しておくと、変数を書くだけで値を呼び出して、計算することができる。
- 値を変えたくなったら、変数に格納する値を変えるだけでいいので、人為的ミスがなくなる。
変数に文字列を代入する
今までは変数に数値を代入しました。次に文字を代入してみましょう。
実際にコードを見てみましょう。
# 変数appleに「りんご」を代入
apple = 'りんご'
print(apple)
りんご
結果は「りんご」と表示されました。
ここでのポイントは、「りんご」をシングルクォート ‘…’で囲んで書いていることです。ちなみに、ダブルクォート “…” で囲んでも問題ありません。ただし、コードを書く際にはどちらかに統一するようにしてください。
数値の場合は ‘…’で囲む必要がありませんでした。しかし、文字の場合、コンピューターに文字だと認識させるため、 ‘…’で囲う必要があります。
また、「りんご」を「文字」と言いましたが、プログラミングでは「文字列」といいます。
数値と同様、文字列も足し算、掛け算することができます。
# 変数appleに「りんご」を代入
apple = 'りんご'
# 変数appleに3をかける
print(apple * 3)
りんごりんごりんご
apple×3すると、りんごが3回表示されました。
次は少し応用してみます。
apple = 'リンゴ'
orange = 'オレンジ'
grape = 'ブドウ'
print(apple + 'と' + orange + 'と' + grape + 'を買いました。')
これがどのように表示されるかわかりますか。
答えはこちら
リンゴとオレンジとブドウを買いました
このように、文字列も足し算、掛け算することができます。
先ほど「数値の場合は ‘…’で囲む必要がありません」と説明しました。もし、数値をシングルクォート ‘…’で囲むとどうなるのでしょうか。
# 変数number1に100を代入
number1 = 100
# 変数number2 に100を代入
number2 = '100'
print(number1)
print(number2)
100
100
結果は両方とも100です。
それでは次に5をかけてみましょう。
# 変数number1に100を代入
number1 = 100
# number1に5をかける
print(number1 * 5)
500
結果は当然500になります。number2ではどうなるか想像できますか?
# 変数number2に100を代入
number2 = '100'
# number2に5をかける
print(number2 * 5)
答えはこちら
100100100100100
なぜ異なる結果になったのでしょうか。
「文字の場合、コンピュータに文字だと認識させるため、 ‘…’で囲う必要があります。」と説明したように ‘…’で囲うとコンピューターに文字列と認識されます。そのため ‘100’ は数字ではなく文字列と認識されたため、100を5回繰り返したわけです。
それでは逆に文字列を ‘…’で囲わないとどうなるでしょうか。
# 変数appleに「りんご」を代入
apple = りんご
print(apple)
NameError Traceback (most recent call last)
<ipython-input-1-d67c97d89965> in <cell line: 2>()
1 # 変数appleに「りんご」を代入
----> 2 apple = りんご
3 print(apple)
NameError: name 'りんご' is not defined
りんごが定義されていないというエラーになりました。「りんご」が文字列ではなく、変数と認識され、りんごが定義されていない(りんごに値が代入されていない)という理由でエラーになったようです。
以上がPythonの変数の基礎です。
変数を使うと、少しプログラミングっぽい感じになってきましたね。
それでも、プログラミングの考え方に慣れるまで難しく感じるかもしれません。
でも、変数を理解すれば、様々なコードを書ける、読めるようになりますので頑張りましょう!
今回やった内容以外にも、自分でいろいろと試してみてください。
コメント