要約
本日は、Pythonで以下を学びました。
変数の利用(代入・参照・上書き・まとめて代入・複合代入演算)
name , age = '城島' , 31
print('私の名前は' + name + 'です')
print('今は' + age + '歳です')
age += 1
print('来年は' + age + '歳です')
※厳密にはageのデータ型strを指定していないので、エラーがでます。大まかな概念として載せておきます。
はじめに
前回は「式と演算」について学びました。
本日は次のステップとして、「変数」について学びます。
1.2:変数
変数の利用
一般的なプログラミング言語には、計算結果などの値を一時的に保存したり、
必要に応じてあとで取り出したりするための道具として、変数(variable)という仕組みが準備されています。
name = '城島'
job = 'データエンジニア'
print(name)
print(job)

このコードでは、変数nameに’城島’、変数jobに’データエンジニア’という値を入れ、
それぞれの変数の内容を表示しています。
変数に値を保存することを「代入する」、
変数の値を取り出して利用することを「参照する」ともいいます。
コンピュータ内に変数を準備して利用可能な状態にすることを、
変数を「定義する」といいます。
変数を定義するために独自の記述が必要なプログラミング言語もありますが、
Pythonでは、まだその変数名が存在しない状態で代入を行えば、自動的に変数が定義されます。

Pythonにおける、変数の定義で文字列、数値等の識別はどうするんだろう?
chatGPT:
Pythonでは、変数を定義したときに型(文字列、数値など)を自動で判別してくれます。これを動的型付けといいます。
明示的に型を変換したいときは、以下のようにします。
num_str = "100"
num_int = int(num_str) # 文字列 → 数値(int)
num_float = float(num_str) # 文字列 → 小数(float)



なるほど!
変数名のルール
①予約語は使用できない
ifやfor、globalやwithなどは予約語であり、これらを変数名として利用することはできません。
②先頭の文字に数字は指定できない
識別子は数字で始めてはいけません
③先頭にアンダースコアを2つ付けた名前は原則として使用しない
先頭に_記号を2つ付けた名前は、Python自体のために予約された名前であり、特別な用途で使用されます。
原則として予約語と同様に利用を避けてください。
④大文字・小文字、全角・半角は区別される
大文字・小文字、全角・半角の違いは完全に区別されます。
たとえば、変数name と Name は別のものとして扱われます。
⑤小文字で始まるわかりやすい名前が望ましい
Pythonでは、変数名には小文字で始める名詞形の名前を付ける慣習があります。
また、その変数に格納される情報の内容を誰もが想像しやすいように、具体的な名前にするのが望ましいでしょう。
変数の上書き
変数には値を何度でも代入することができます。
すでに定義されている変数に代入を行うと、新しい変数が定義されるのではなく、その変数の値を上書きします。
つまり、一度使ってもう利用しなくなった変数に、別の値を代入して使い回す(再利用する)ことが可能なのです。



ループやifで戻ったときに、上書きされた値が使われる可能性がある・・・?ちょっと不安かも・・・。
別でしっかり定義する方が安全に思えるけど、実際どうなんだろう・・・。
ただし、変数の再利用には注意すべき落とし穴があります。
たとえば、変数xに慎重の値を入れて処理した後、次は体重の値を入れて別の処理をするコードも書けます。
しかし、このようなコードは、変数xに現在どのような値が入っているかが不明確になり、思わぬ不具合の原因になりやすいものです。
原則として変数の再利用は避けることをおすすめします。



そりゃそうだよね。
変数は再利用しない
また、Pythonでは、中身を絶対に書き換えられたくない変数は、目立つように大文字の変数名を付ける慣習があります(「TAX_RATE」など。)
大文字の変数名を見かけたら、その変数には代入しないように注意しましょう。
まとめて代入(アンパック代入)
複数の変数に対して、同時に値を代入することができます。
この代入方法をアンパック代入と呼びます。
#複数の変数をまとめて定義します。
name , job = '城島' , 'データエンジニア'
print('私の名前は')
print(name)
print(job)
print('になりたいです')


複数の変数をまとめて定義できるようになりました。
ただし、あまりに多くの変数定義を1行にまとめると、どの変数にどの値が代入されているのかわかりづらくなったり、
変数と値の数が一致せずにエラーが起こりやすくなったりするので注意しましょう。



ケースバイケースでまとめてもいいかもしれないですね!
自分自身への代入
変数の現在の値を利用して、新しい値を代入することができます。
#日数を重ねていきます。
day = 5
print('今日はデータエンジニアを目指して何日目ですか?')
print(day , '日目です')
print('明日はデータエンジニアを目指して何日目ですか?')
day = day + 1
print(day , '日目です')
print('明後日はデータエンジニアを目指して何日目ですか?')
day = day + 1
print(day , '日目です')


day = day + 1 とプログラムを組むことで、自分自身に代入することができる。
このとき、
・式は評価され、計算結果に置き換わる。
・代入演算子は優先順位が一番低く、右から順に評価される。
・変数名は中身の値に評価される。



数学的な視点でみると違和感がありますよね!
複合代入演算子
変数の現在の値に対して、演算と代入を同時に行うことができます。
#変数の現在の値に加減乗除する
day = 5
day += 1 #「day = day + 1」と同じ
price = 400
price *= 1.5 #「price = price * 1.5」と同じ
このように、算術演算子と代入演算子を組み合わせた演算子を複合代入演算子といいます。
演算子 | 説明 |
+= | 右辺の値と左辺の変数の値を足し算して変数に代入 |
-= | 右辺の値と左辺の変数の値を引き算して変数に代入 |
*= | 右辺の値と左辺の変数の値を掛け算して変数に代入 |
/= | 右辺の値と左辺の変数の値を足し算して変数に代入 |
キーボード入力値の代入
次の構文を使うと、ユーザーからの入力を変数に代入することができます。
変数名 = input(文字列)
※文字列には、ユーザーに入力を促すメッセージなどを記述する。
この構文の右辺に使われているのは、input関数というPythonの代表的な命令です。
input関数は、ユーザーの入力を受け取り、それを文字列として返します。
#キーボードから値を入力する
name = input('あなたの名前を入力してください >>')
print('採用担当者:' + name + 'さん、あなたがくるのを待っていました!')


名前を入力したあとにEnterを押すと、無事にプログラムが動きました。



早くこう言われるようになりたい・・・!
まとめ
本日は、Pythonで以下を学びました。
変数の利用(代入・参照・上書き・まとめて代入・複合代入演算)
name , age = '城島' , 31
print('私の名前は' + name + 'です')
print('今は' + age + '歳です')
age += 1
print('来年は' + age + '歳です')
※厳密にはageのデータ型strを指定していないので、エラーがでます。大まかな概念として載せておきます。
次回はデータ型を扱っていきます。



だんだんプログラミングっぽくなってきました!