Be a Pythonista ! その2 変数①

最初に…

げるすらは
「プログラム四種の神器」
なるものがあると勝手に考えています。
それは・・・

  • 変数

  • 関数

  • 繰り返し処理 ( for, while )

  • 条件分岐 ( if )

この四つがあれば記述できない処理は存在しない!
と考えています。
(コンピュータなんて足し算と引き算と比較ができれば動くし!)
もしかしたら過言かもしれませんが、少なくとも初学者にとっては
これらを使えるようになったら自由に処理が書けるようになって、
楽しくなり始めるんじゃないかな~と思います。

ということで、今回は「変数」をやります!

変数は解説し始めると凄まじい量の文になるので、前後編に分けます。
前編の今回は、とりあえず変数を使ったコードを動かすだけです。


目次



前の記事

良ければひとつ前の記事もどうぞ!


変数の型って覚えるの面倒ですよね

プログラム系の本を読むとだいたい一番最初に叩き込まれるのがこれ。
変数の型」です。
型を真っ先に暗記で叩き込む風潮どうなん?といつも思っているのですが、
仕方ない側面もあったりするんですよね。
理由は簡単で、通常は型を知らないとそもそも変数を使えないからです。

でも、Pythonはそこをぶっ飛ばして書き始めても問題ありません。
とりあえず動かす程度なら型なんて知らなくても書けちゃうんです。

そう、Pythonならね。


とりあえず書いて動かそう

変数を使っていろいろ動かしてみよう

まず、以下のコードを書いて動かしてみましょう!

a = 2
b = 5
x = 9
y = a * x + b
print(y)

このコードを実行したら、以下の結果が出力されると思います。

23

これは、
a」という変数に「2
b」という変数に「5
x」という変数に「9
y」という変数に「aとxをかけて、bを足した結果
をそれぞれ代入をして、「y」をprint文で出力しています。
つまり、
aには2、bには5、xには9という具体的な値が入っていて、
yにはその計算結果が入っていることになります。
この a、b、x、y が「変数」です。
変数には上記のように好きな値を格納することができます。

このコードは、式で書くと以下の計算しているのと同じです。

一次式

変数と聞くと、上記の式のような数学を思い出すかもしれませんが、
プログラムにおいては計算以外にも変数は使えます。
たとえば、

s = 'I'
v = 'call'
o = 'her'
c = 'Reala'
print(s, v, o, c, end='.')

このコードの出力は、

I call her Reala.

となります。

print文の詳しい使い方は前回の記事に書いてます。
最後にリンク貼るので、よければどうぞ。

文字に対してかけ算や足し算を行うこともできます。
たとえば、

s = 'Reala'
v = 'makes'
o = 'me'
m = 'very' * 3
c = 'happy'
print(s, v, o, m, c, end='.')

を実行すると、

Reala makes me veryveryvery happy.

と出力されます。

m = 'very' * 3
の箇所で
「veryを3つ繋げて、変数mに格納」
をしているので、
「m = 'veryveryvery'」
と同じ結果になります。

足し算は以下の通り。

s = 'Reala'
v = 'makes'
o = 'me'
m = 'very' + 'very' + 'very'
c = 'happy'
print(s, v, o, m, c, end='.')

出力は先ほどのかけ算と同じで、

Reala makes me veryveryvery happy.

になります。
つまり、
m = 'veryveryvery'
m = 'very' + 'very' + 'very'
m = 'very' * 3
この三つは全て同じ結果になります。
文字に計算を実行すると、文字同士が結合されるのです。

他にもいろいろなものを変数には入れることができます。
ただ、以下のような場合にはエラーが出るので、注意しましょう。


エラーが出る!

値の使い方によっては、計算・結合ができない場合があります。

m = 'very' + 3

これを実行すると以下のエラーが出るはずです。

Traceback (most recent call last):
  File "Main.py", line 1, in <module>
    m = 'very' + 3
TypeError: can only concatenate str (not "int") to str

このエラーの以下の点に注目しましょう。

TypeError: can only concatenate str (not "int") to str

クソ雑翻訳
型エラー:strはstrとだけ連結できます。intは勘弁して。

まぁ、普通に考えても
「very」に「3」を足すってなんやねん
ってなりますよね。
(「very」に「3」をかけるってのもそこそこ意味不明ですが・・・)

ここで「変数の型」を意識する必要が出てくるのです。
変数を使った処理は型を意識して書かないとダメなんです。


結局、型ってなによ?

プログラムを書く上で避けて通れない概念が「」です。
型とは、値の種類(数字なの?文字なの?など)のことです。
Python以外の多くの言語は、変数を作る段階で型を明示します。

int x = 10; //C, C++, C#での変数宣言

var x: Int = 10 //Kotlinでの変数宣言

x = 10 //Pythonでの変数宣言

Pythonの場合は、変数に入った値を確認して変数の型を自動識別するので、
変数を作る際に型を決めなくてもいいのです。

また、通常は明示した型以外の値を変数に入れることはできませんが、
Pythonは後から違う型の値を入れても変数が勝手に型を変更します。
めちゃくちゃ便利!

まず、げるすら的によく使う型を列挙します。

  • int型(イント、インテジャー):整数を扱う型

  • float型(フロート):小数を扱う型

  • str型(ストリング):文字列を扱う型

  • bool型(ブール、ブーレン):真偽値(True, False)を扱う型

  • list型(リスト):複数の値を一つの変数で保持する型

  • tuple型(タプル):list型と似た型 list型と違って、値の変更ができない

  • set型(セット、集合):list型と似た型 list型と違って、重複・順番が無い

  • dict型(ディクショナリ、辞書):list型の値にインデックスが付属した型

ここらへんを覚えていればとりあえず不自由はしないと思います。
詳しいことは次回の後編記事で言及します。


型? ただの慣れだよ。

型なんて使っているうちに慣れて使えるようになることもありますので、
「覚えなきゃだめだ!」
みたいに思う必要は全くありません。
なんなら、いろんなものを作るようになってきたら謎の型が出てくるので、とりあえず納得して使うって対応も必要です!
ndarrayだの〇〇objectだの、はにゃ~になった記憶が私にもあります。

コードを書かないことが最も避けるべき事態ですからね?
ということで、いろんなコードを書いて型に慣れましょう。

ゆるふぁいですよ!


次の記事

次の記事は変数②です。
よければどうぞ!

この記事が気に入ったらサポートをしてみませんか?