Pythonの学習で一番最初に学んだ”変数”
どの入門本でも一番最初に記載してあり、プログラムを構築していく為には欠かせない要素の一つとなっています。
その文字の通り、”変数”は「変わる数」プログラムの中で更新していくことができます。
尚、数値だけではなく、文字列も変数に代入することができます。
もくじ
数値や文字列などのデータ類をまとめて「値(あたい)」と呼びます。
同じ値を複数箇所で使う場合、プログラムに値を直接入力していると、値を修正しなければならなくなった際に手間がかかりますよね。
上記の様に事前に繰り返し使うことがわかっている値は、「変数」に入れておくと後々便利です。
”変数”は何らかの値を入れて置ける箱の様なものだと思ってください。
※変数に初めて値が入ることを初期化(もしくは生成)と呼びます。
「数値=値」という書き方の文を「代入文」と呼びます。
「=(イコール)」は演算子の一種で、数学だと「等しい」という意味ですが、Pythonでは「右辺を左辺に入れろ」、または「記憶しろ」という意味で使われます。
変数はいくつも作成できるので、区別する為に分かりやすい名前をつけておきましょう。
>>>i = 10 >>>print(i) 10 >>>i = 20 >>>print(i) 20
変数に新しい値を代入することで、変数を上書きすることができます。
上では変数iに10が入っていましたが、その後20で上書きされたので20が呼び出されています。
numA = 2 numB = numA + 5 numB = numA - numB print(numA) >>>2 print(numB) >>>-5
上の動きを説明していきます。
まずnumAに2を代入しています。
numBにはnumA + 5が代入され、7となっています。
numA – numB で2 – 7となっており、numBは-5が上書きされています。
変数に使うことができる文字の種類は、アルファベット、数字、アンドースコア(_)だけです。
日本語の文字が使えないので、変数名は英語を使ったパターンをよく見かけますが、ローマ字で日本語表記しても問題はありません。
変数名を1つの単語で表現できない場合は複数の単語を「_」で繋げます。
例えば、「フルーツの名前」なら「fruit_name」と言った具合です。
また、変数名はアルファベットの大文字と小文字を区別されます。
その為、xyzとXYZは違う変数として扱われます。
#使える変数名 apple = "りんご" a_b = 100 _ab = 100
他にも、
「TrueStory」の様に他の文字と組み合わせた場合はOKです。
因みに、「print」の様な組み込み関数と同じ名前の変数を作ることもできます。
「print」という変数を作ってしまうと、その時点でprintは変数のものとなってしまう為、print関数を呼び出すとエラーになってしまいます。
エラーが出なくても名前の重複は避ける様にしましょう。
では実際に変数を作って、それを表示するプログラムを作ってみます。
>>>text = "ハロー" >>>print(text) ハロー
「変数=値」という代入文の働きは、正確に表すと、その名前の変数がなければ新たに作成して値を記憶し、同名の変数があればそこに値を新しく記憶しろとなります。
つまり、代入した時から値を入れた変数は値の代わりに使うことができる様になるのです。
#消費税の計算 a = 150 s = a * 1.08 print(s) #表示結果 162.0
変数aに何か商品の定価を入れると、消費税額を含めた売値を割り出して変数sに入れ、それを表示するというプログラムです。
Pythonでは変数の型を宣言しなくても、自動的に判別されていますが以下よく使うので覚えておいたほうが良い型を紹介します。
小数点を含まない型は全て整数型になります。そこには正の数はもちろん0や負の数も含まれています。Pythonでは「int(イント)型」という名前がつけられています。
※Pythonで型を調べたい時は”type()”関数で引数に指定したオブジェクトの型を調べることができます。
小数型は、小数点を含む数字を表すデータ型です。
小数点入りの数字を書くと、小数型のデータが表示されます。Pythonでは「float(フロート)型」という名前がつけられています。
文字列型は文字列を表現する為のデータ型です。前述しましたが、シングルクオート「’文字列’」かダブルクオート「”文字列”」で文字列を囲みます。
数字も「”数字”」「’数字’」で囲むと文字列型になります。
また、「””」「”」の様に1文字も使わない文字列を使うこともできます。
これを空文字列といいます。
Pythonでは「str型」という名前がつけられています。
「True」「False」の2つが真偽型に当たります。Pythonでは「bool(ブール)型」と呼ばれます。
文字列型や整数型がとりうる形は無限にありますが、ブール型は「True(真)」か「False(偽)」の2種類しの値しか取れません。
※ブール型は数学者Geoge Booleに因んで名付けられたデータ型らしいです。
if文やwhile文などでよく使われますが、「<」や「==」などの、演算子を使って右辺と左辺を比べる際に使われます。
演算子 | 意味 |
---|---|
== | 等しい |
!= | 等しくない |
< | より小さい |
> | より大きい |
<= | 以下 |
>= | 以上 |
ブール演算子(and,or,not)は、ブール値を組み合わせる際に使用します。
比較演算子の様に、一つのブールを返します。
andとor演算子は、常に2つのブール値をとるので、二項演算子と呼ばれます。
and演算子は両方のブール値がTrueの時にTrueとなり、それ以外はFalseとなります。
>>>True and True True >>>True and False False >>>False and False False >>>False and False False
一方、or演算子はブール値のどちらかがTrueであればTrueとなり、両方ともFalseであればFalseとなります。
>>>True or True True >>>True or False True >>>False or False False
andやorと異なり、not演算子は一つのブール値だけをとります。
not演算子はブール値を反転させます。
>>>not True False >>>not False True >>>4 == 5 False >>> not 4 == 5 True
リストは、数値や文字列などを並べて格納できるデータ型です。
書き方は要素を「,」で区切り全体を「[]」で囲みます。
#リスト l = ["a",10,"b","めもを"]
リストにはインデックス番号がつけられており、前から順番に0,1,2と数えます。
例えば、上記より「10」を取り出したい時は l[1] の様にします。
リスト型を実際に使って、より詳しい説明と使い方をめもしておきました。
>>>"ラム" + "レム" "ラムレム"
上記の様に文字列同士を演算子「+」で連結させることもできます。
では、文字列と整数を連結しようとすればどうなるでしょうか?
>>>"シュタインズゲート" + 0 TypeError: can only concatenate str (not "int") to str
意訳: strはstrとだけ連結出来るから!!
と怒られてしまいました。
Pythonは自動的に型変換してくれないので、整数を明示的に文字列に変換する必要がある様です。
>>>"シュタインズゲート" + str(0) >>>"シュタインズゲート" + "0" 'シュタインズゲート0'
上記の様に関数str()を用いて整数をstr型に変換させるか、””で囲ってstrとして連結させれば解決です。
>>> "レム" * 5 'レムレムレムレムレム'
因みに、上の様に演算子「*」を使って文字列と整数をかけると、整数で指定した数だけ文字列を繰り返した文字列ができます。
※あまり使われません。
「*」演算子は2つの数値の掛け算と、文字列と整数値の掛け合わせだけ用いることができます。
計算の優先順位に関しては6.17. 演算子の優先順位を確認してください。
Pythonの変数について紹介していきました。
特に難しいことは無いと思いますが、変数名の付け方やデータ型にはきをつけてprintしましょう!笑
よくintとstrの間違えでエラーになることがあります。。。
Jupyter Notebookで変数をまとめてみました。