Python

【Python】プログラムで変数を使う理由と変数を使ってフィボナッチ数列を書いてみた

パソコンを操作しているハリネズミ Python

前回の記事で、Pythonのプログラミングをする上での基本的な記述ルールを記載しました。

今回は基本ルールの続きとなりますが、プログラミングで非常に大事な概念である「変数」について書きたいと思います。

ちなみに変数はPythonだけでなく、ほぼ全てのプログラム言語で使われていますので、プログラミングをご存じの方は改めての説明になるかと思います。

変数って数学でも習うよね、xとかyとかに数字を入れて方程式を作ったりして解いたよね

はい、そんなイメージで大丈夫です。

この記事を読んで分かること
  • Pythonで使用する変数とは何か
  • プログラムで実際に文字列を変数で使う理由
  • 変数を使ってフィボナッチ数列を作ってみた
スポンサーリンク

変数とは何か

変数とは、ズバリ

値を保管するための入れ物」です。

例えばPythonで変数はこういった感じで使います。

x = 1
y = 2
z = x + y

nm = "どうも、僕です"
print(nm)

上記で言う、「x」「y」「z」「nm」は全て変数です。

ちなみに変数を使う場合、Pythonでは「変数名 = 任意の値」と記述します。

それから値が数字の場合はそのまま書きますし、文字列の場合はダブルクォーテーション(””)で囲います。

これがいわゆる「変数」で、プログラミング上で値を保管する場所を示します。

この値を一時的に保管できる入れ物があるだけで、プログラミングが非常に簡素化されてシンプルになります。

では、変数が必要なのはどういった場合でしょうか。

変数に文字列を入れる

例えば、名前を使って自己紹介するプログラムを書いてみましょう。

print("初めまして、私の名前は",end="")
print("山田太郎",end="")
print("でーす")

あまりキレイなプログラムではないですが、これを実行するとこうなります。

初めまして、私の名前は山田太郎でーす

はい、これを名前部分だけ変数に変えるとこうなります。

name = "山田太郎"

print("初めまして、私の名前は",end="")
print(name,end="")
print("でーす")

これは1行目に「name」という変数を定義して、そこに文字列の「山田太郎」という値を入れています。

そして、4行目に「nameという変数をprintメソッドで表示しています。

で、これを実行しても、先ほどの実行結果と全く同じになります。

というか変数使った方がプログラムの行数増えとるがな、シンプルどころか余計に複雑になってるやん

はい、そうです。
これだけだと変数の必要性がわからんですよね。

ただしこの山田太郎という名前がプログラム上で複数の場所で使われていたらどうでしょう。

例えば、上記以外にも

print("おー久しぶり、俺の名前覚えてる",end="")
print("山田太郎",end="")
print("だよ")

とか

print("そこの方知ってる?、僕の名前は",end="")
print("山田太郎",end="")
print("なんですよ")

なんて処理がプログラムのいたる所で使われていたらどうでしょうか。

そして、もしこの「山田太郎」が実は「小山田太郎」という名前だったとして、正しい名前に変更しなければならないとなった時にどうでしょうか。

変数を使わなかった場合、プログラムに記載されている全ての「山田太郎」の記述箇所を見つけて「小山田太郎」に変更しなければなりません。

仮に100箇所で使われているとして、その100箇所を全て洗い出して変更しなければなりません。
ひとつでも修正が漏れるとバグになります。

ですが、もしこれが変数を使っていた場合。
そして全ての処理で変数を使って名前を表示していた場合に、名前の変数を以下に変更するだけで良いのです。

name = "小山田太郎"

システム開発をしていれば、途中のプログラム変更や後々仕様を変更するといった事は日常茶飯事です。

そういった変更に耐え柔軟に対応するためにも、変数を使ってプログラムを書くというのは非常に有効な方法です。

変数を使って計算をする

また、単純に変数を使わないと書けない処理もあります。

例えばフィボナッチ数列というのはご存知でしょうか。

フィボナッチ数列とは、黄金比とかでもよく出てくる数列で、隣り合う2つの数字を足した数字が次の数字になる数列です。

具体的には、以下のような数列です。

1、1、2、3、5、8、13、21、34、55、89、144、233、377…

これをプログラムを使って表示してみましょう。

少しプログラミングっぽい内容になるけど、分かんない人はふーんくらいに見といてね

num1 = 0                      # 前の数字
num2 = 1                      # 後ろの数字

for i in range(20):           # 20回繰り返し
    print(num2 , end=",")     # 数字をカンマ区切りで表示
    temp = num2               # 数字を一時的に保管
    num2 = num1 + temp        # 数字を足して代入
    num1 = temp               # 保管していた数字を代入

処理の内容としては

4行目の「for」で始まる文は繰り返し処理を表しており、5行目から8行目のインデントになっている部分を100回繰り返すという意味になります。
(ちなみに繰り返しの処理に関しては、また別の記事で詳しく説明します)

5行目は後ろの数字をカンマ区切りで表示しています。

6行目7行目に、後ろの数字を別の変数にコピーして、2つの数字を足した数字を後ろの数字に代入します。

8行目で、最初に後ろだった数字を前の数字に代入します。

これらの処理を繰り返します。

以上がプログラムの全てで、これを実際にPython上で実行すると以下になります。

1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,

うまくフィボナッチ数列になりましたね。

こういった少し複雑な計算をする場合でも、変数を使うことによって処理が共通化されプログラムを簡潔にかつシンプルに記述できます。

こういった点もプログラムで変数を使う利点となります。

スポンサーリンク

まとめ

今回は、プログラミングの基本中の基本である「変数」について学びました。

次回以降は、変数に代入する値についての型や配列についての記事を書きたいと思います。