アメリカの大学で奮闘中

アメリカの大学でプログラミングを学ぶべくコンピューターサイエンス学部に留学したものの挫折し数学科に転部した著者が、自分の挫折ポイントを踏まえて数学、プログラミング、アルゴリズムついてできる限り分かりやすく解説してみるブログ。*できる限り記事の内容は技術的な間違いをしないように気をつけていますが、もし間違いがあれば教えていただけると助かります。

<超基礎>プログラミングの変数の使い方by python

 レベル1 変数って何?

 

まずは簡単な問題から

Hello everyone, my name is Amy

Hello everyone, my name is Kohei

Hello everyone, my name is Muhammad

と表示するコードを書いて見てください。

 

 

print() だけを使う方法

print("Hello everyone, my name is Amy")

print("Hello everyone, my name is Kohei")

print("Hello everyone, my name is Muhammad")

 

この3つのコードを見ると "Hello everyone, my name is "の部分が共通していることがわかります。

 

同じ文字を何回も入力するのは大変です。なので "Hello everyone, my name is "の部分

変数というラベルのようなものを貼り付けて、今後その文字列を入力すると

きは代わりにラベルの名前だけ書いてコンピューターに(正確にはインタープレター

に)その場所にはラベルの値を代入してもらうことにしましょう.

 

 

まずラベルの貼り付け作業をします。

greeting = "Hello everyone, my name is"

 

ラベル名は””をつけて文字列のデータにしてはいけません。

 

 

このラベルの貼り付け作業を、変数を定義すると言います。

 

ラベルの貼れるデータは文字列、数字、リスト、Boolean(正、偽)など多岐に渡ります。

エントリー向けなので、この記事では文字列と数字しか扱いません。

 

さて変数が定義できたので(ラベルが貼り終わったので)、greetingという変数(ラベル)の名前を、変数の値(ラベル付けした値)を使いたい箇所に書き込みましょう。

 

print(greeting,"Amy")

print(greeting,"Kohei")

print(greeting,"Muhammad")

 

コードを実行すると

Hello everyone, my name is Amy
Hello everyone, my name is Kohei
Hello everyone, my name is Muhammad
>>>

 

こんな感じで変数の名前を書けば値が代入されるというわけです。

 

一度変数を定義すると(ラベルを貼ると)、その後のコードで何回でも使うことができます。

 

他の例

a = 3

b = 4

num = a + b    # num = 3 + 4  ← a = 3, b = 4を代入

print(num)

 

コードを実行すると

7
>>>

 

このように変数(ラベル)を使って新しい変数を定義する(新しいラベルを貼る)ことも可能です。

 

 レベル2 こんな感じでも変数を使える

 ここからは少しレベルの上がった変数の使い方を紹介します

 

レベル2.1  同じ変数で同じ変数をもう一度定義する

先に例を出させてください

 

num = 3
num = num +4
print(num)

 

実行結果

7
>>>

 

何が起こったかというと

1行目  

3という数字型のデータにnumというラベルを貼った。

 

2行目  

num+4を見たコンピューターは、さっき定義した3を代入、計算して7をだす。

その7という数字のデータにnumというラベルを貼りなおします。ラベルの貼りなおしは上書き保存だと思ってください。なので次numを呼び出したときは3は出て来ません

 

3行目

numの値を代入して、出力

 

レベル2.4 省略した書き方

ある変数に処理を加えて同じ変数名でもう一度定義する場合、省略して書くことができます。

 

公式は以下の通りです。

n ○= a

n:変数名

○:オペレーター(+ー* /など)

a:オペレーターの処理がされるデータあるいは変数

 

num = num +1  →  num += 1

num = num -1  →  num -= 1

num = num * 2  → num *= 2

num = num / 2 → num /= 2

 

レベル6 2つの変数の交換の仕方

レベル6と書いていますが、別にプログラミングとして難しい訳ではなく、少し数学的、というか算数的なセンスが必要なだけです。

 

もし数学が嫌いだとしてもそんなに怖がらなくても大丈夫です。数遊びの延長なので。

 

少し考えて見てください

a = 3, b = 4 の時、aにはbの値、bにはaの値を代入したい場合(a = 4, b = 3にしたい場合)はどういうコードを書いたらいいと思いますか? 

勿論そのままa = 4, b = 3とするのはなしです。

 

a = b, b= aが思いついた人へ。

残念ながらこれは間違いです。実験して見ましょう。

a = 3 b = 4 はすでに定義されているものとします。


a = b  (a=3 → a = 4)
b = a
print(a,b)

 

アウトプットはこうなります。

4 4
>>>

 

なぜこうなったか分かりますか?

3行目でaの値はb の値になり、a本来の値は忘れ去られてしまいます。(レベル2.1参照)

 

ではどうすればいいのでしょうか?

 

レベル6.2 他の変数に覚えておいてもらう

temp = a

a = b

b = temp

 

4 3
>>>

 

このように、新しい変数に先に新しい値に変わるaを覚えておいてもらいbの定義の時に使うことで、実質値が交換されたことになります。

 

レベル6.5  中1数学を応用する

total = a + b
a = total - a
b = total - a
print(a,b)

 

4 3
>>>

 

どうなっているか数学して見ましょう

total = a + b

a = total - a        =(数学に変換) (a + b) - a = b  (3 + 4) - 3 = 4 = a

b = total - a        =(数学に変換) (a + b) - b = a    (3 + 4) - 4 = 3

 

3行目に首を傾げた方へ

2行目でaは3の変数名(ラベル名)ではなく、4の変数名(ラベル名)になっていることを思い出して考えてみてください。

 

6.0 せこ技 (他のコンピューター言語でできるかどうかは分からないけど)

a, b = b,a

4 3
>>>

 

最後は拍子抜けだったかもしれませんが pythonではこれで交換できます。

 

ちなみにレベル6の内容はアルゴリズムの勉強をした時にも出て来ました。

 

一応書いたコードはちゃんと動くかIDLEで実行していますが、もし間違いやコードが動かないなどありましたらコメント欄でお教えください