現在のAmazon情報
Pythonでは日本語変数も使える【変数基礎】

今回はPythonの「文法」をやります。
プログラミング言語には文法があります。英語にも文法がありますよね。名詞、形容詞、副詞などがあって、それを決まった順番で組み合わせることで意味を正確に伝えることができます。
プログラミング言語にも、変数、データ型、繰り返し、条件分岐などと言われる「約束事」が存在します。もちろんPythonにも。
そこで今回は文法の初歩の初歩である「変数」について解説します。

初心者向けに解説するよ!
変数って何?
簡単に言うと、変数というのは、「プログラムの途中で値を一時的に覚えておくために使うメモ」です。まず変数の使い方を解説し、そもそも変数とは何なのかという解説をします。
Pythonでの変数の書き方【日本語も使えます】
変数名 = 値
このように書けば変数に値が入ります。
例えばmikanという変数に10という数値を入れたいときは次のように記述します。
mikan = 10
mikanは英数字ですが、日本語も使えます。
みかん = 10
例えば変数「みかん」を繰り返しのfor文で使うと次のようになります。
みかん = 10
for i in range(5):
print(みかん + i)
出力は
10
11
12
13
14
となります。
このようにPythonでは日本語変数が使えます。英数字の変数を使おうとなると、単語を想像してから英語の翻訳サイトで英語に変換して、しっくりくる単語を変数名に使うことになりますが、この翻訳作業は結構面倒なので、簡単なプログラムなら日本語変数もアリです。
ただし日本語変数は他のライブラリなどとの相性問題が絶対に起きないとは言い切れないので、他の人に見せるような本番のプログラムでは推奨されません。
型宣言は基本的に不要です
例えばVBAで整数型の変数に初期値を代入する方法は次のようになります。
Dim a As Integer
a = 10
Pythonでは「=」の右側の数値の型の情報をもとに、自動的に型が変数に設定されるので、型宣言は基本的に不要です。上と同じことをPythonでやると次のようになります。
a = 10
コードがスッキリしますね。ただしどの変数にどんな型の値が入っているのか常に把握しておかないとバグのもとになるので、そこは注意してください。
日常で使うメモを考えてみよう
ウォーミングアップとして日常でメモする場面を考えてみてください。



うーん、やることリストとか?
そうだね。他には電話番号をスマホに記録するとかもメモだね。



あれってQRコードを読み取ればいいだけじゃないの?
確かに手書きで情報を残してないからメモとは言わないかもしれないね。でも「何か覚えておかないといけないことを記録しておく」という意味ではメモと言えなくもないね。そう考えると他にもありそうじゃない?



あ、通販すると購入履歴とか見れるよね
購入履歴も買った物の情報を忘れないように記録しておくという意味でメモと考えられるね。
こんな風にメモというのは「何か覚えておかないといけないことを記録しておく」ために何かに情報を残すことだね。
コンピューターの中ではプログラムが色々と動いているんだけど、このプログラムの中でもメモを使うことがあるんだ。それが「変数」だよ。



でもまだ僕プログラミングできないから、意味わかんないよ?
そうだね。だからすごく簡単なプログラムを書いてみて覚えていこう。
あと、上で挙げたメモの例の中で実際に変数が使われているかというのは保証してないよ。現実世界では変数じゃなくてデータベースとかにデータは保存されてたりする。でもとりあえずプログラミングの基礎になる変数を学ぶところから始めていこう。
足し算をするプログラム
次のようなPythonプログラムを動かしてみよう。
a=5
b=3
print(a+b)
出力は8です。print()の()の中に出力したいものを書けば、値が出力されます。



print()の使い方がよくわからないよ
初めて出てくる単語だからね。print()はprint文と言われていて、コンソールに値を出力する命令文だよ。



コンソールってあの黒い画面だね。難しそうなやつ…
まあ今はプログラムの結果を表示するウィンドウだと思ってくれればいいよ。使い方を練習してみよう。次のプログラムを実行してみて。
print(11)
print(3+4)
print("こんにちは")
どんな結果が表示されたかな?



11、7、こんにちは、だね
print文の使い方はなんとなくイメージできたかな?print()の()の中に表示したいものを入れるとそれが表示されるよ。文字を表示したいときは「""」でくくってね。じゃあ最初の変数を使ったプログラムをもう一度見てみよう。
a=5
b=3
print(a+b)
ここでaとbを変数というよ。「=」の右に入れたい情報を書くよ。この書き方で、aという変数には5が、bという変数には3という値が入るよ。値にaとかbとか名前を付けて管理するんだ。



だからa+bは8なんだね
そう。変数という箱の中身を足し算しているんだ。



なんで名前をつけるの?
コンピューターが値を思い出したいとき名前が無いと不便だからだね。適当に数値だけ記録し続けると、思い出すとき不便でしょ。最低限意味がわかる名前を付けておけば、「ああ、あの値なんだっけ。名前は「昨日もらったお小遣いの金額」だったな」って感じで思い出せるでしょ。



320、1500、250とか数値が並んでいるだけだと、どれがお小遣いの金額を表しているのか判断できないもんね
変数名に「昨日のお小遣い=320」と付けておけばprint(昨日のお小遣い)と書くことで昨日のお小遣いの金額である320を表示できるね。あと「昨日のお小遣い」の方がわかりやすいけど普通は「yesterday_pocket_money=320」みたいに英語を使って名前を付けるよ。単語が複数になるなら「_」で繋ごう。英語が苦手なら「kinounookodukai=320」とかでもいいよ。



なんで英語を使うの?
コンピューターは基本的に英語のプログラムが中で動いているんだ。英語はアルファベットが使われているから、日本語を使うと色々エラーが出たりするんだよ。アルファベットが書かれるはずって前提でコンピューターができているのに、無理やり想定外の日本語を入れると対応できないことがあるんだ。



ふーん。そうなんだ
ところで注意があるよ。「=」という文字を使っているけど、数学とは使い方が違うんだ。



aは5、bは3ってそのままの意味じゃないの?
その理解の仕方でいいんだけど、プログラミングでの「=」は代入記号と言って「右の値を左に入れる」という意味しかないんだ。だから次のようなプログラムの中身に注意が必要だよ。
a=5
b=3
a=b
print(a)



コンソールには3って表示されたよ。でもa=bってところが、5になるのか3になるのかわからないよ
そうだよね。数学的には「=」の右と左は同じという意味だから、上のプログラムではaとbの値が違うから意味がわからないよね。aとbは違う値なのに「=」でつなげるのはなぜなんだろう?ってなるよね。でも「右の値を左に入れる」という意味に「=」を読み替えてみて。



あ、bの値をaに入れるってなるね
だからaにはbの値である3が入るね。そうするとprint(a)とやると新しいaの中身である3が表示されるよ。ちなみにこのときbがどうなるかもやっておこう。
a=5
b=3
a=b
print(b)



今度も3と表示されたよ。bの値は変更されないんだね
そうなんだ。a=bと書いているからaとbの値が同じになって、bも何か変わるんじゃないか、みたいに思うかもしれないけど、「=」には「右の値を左に入れる」という意味しかない。だからbには最初に3を入れただけだったから、bの値は3のままなんだよ。
プログラミングが少しわかってきたかな?じゃあいよいよ「メモ」について話していくよ。
変数に途中の値をメモする



メモは何か覚えておかないといけないことを記録しておくためのものって話だったね
例えば消費税が10%のときに税込み価格を計算する場合を考えてみよう。税込み価格は税抜き価格に1.1を掛ければいいよ。下のプログラムではtaxが税のための係数、itemが商品の税抜き価格だよ。「*」記号はプログラムで掛け算をするときの記号だよ。「×」記号ではないことに注意してね。
tax=1.1
item1=120
item2=250
print(item1*tax)
print(item2*tax)



どこがメモなの?
taxに1.1を入れているところだよ。変数taxを使わずに同じプログラムを書くとこうなるよ。
item1=120
item2=250
print(item1*1.1)
print(item2*1.1)



たいして便利になってないような感じがするけど
でもねitemが300個あったりする時を考えてみて。そうすると1.1ってプログラムに書き続けるの辛くない?



たまに11とか1とか打ち間違えるだろうね
そうなんだよ。何度も繰り返し使う値とかは変数にメモしておいて、名前で管理したほうが間違いが少なくなる。さらにPythonなら今までに出てこない変数名を使おうとするとエラーになるから、変数名を打ち間違えても気づきやすいんだ。
こんな風にプログラムの中でちょっと値を保存しておきたいときに変数を使ってメモを残すんだ。



ふーん。そうなんだ
変数のデータ型
変数について解説したけど、もう一つ覚えてほしいことがあるんだ。それは「データ型」だよ。



また新しい話?疲れたよ
もうちょっとだから頑張って。
データ型っていうのは変数を理解するのに大事なんだ。変数には数値のほかに文字列を入れることができるんだ。
a="tanaka"
b="satou"
print(a+b)



文字を変数に入れるときは「””」で挟むんだったね
うん。文字列を入れた変数は「文字列型」の変数になるよ。数値を入れた場合は整数を入れれば「整数型」、小数を含んだ数値を入れた場合は「浮動小数点型」になるよ。



変数の中に入れるものの種類によって変数の種類が変わるってこと?
そう。ところで僕たちが普通に生活していると数値も文字もあんまり区別なく読んで意味がわかるよね。



そりゃあ1って書いてあったら数字だな、こんにちはって書いてあったら挨拶だなってわかるでしょ
そうなんだけど、コンピューターはそれが苦手なんだよね。コンピューターは基本的に数値も文字も0か1のパターンで判断しているんだよ。文字は特定の0と1のパターンと文字の対応表を照らし合わせてそれが「あ」とか「山」とか判断してるんだ。あと小数は整数とは別の方法で記憶するから、整数と小数を筆算で簡単に足したり割ったりできないんだ。



だから変数も入れるものによって記憶方式が変わるってこと?
そうだよ。整数を入れたら整数用のモードで記憶する。小数なら小数モード、文字列なら文字列モードに変わる。プログラムは変数のモードに合わせて動くんだ。「あ、文字列が使われているから文字列用の処理をすればいいんだな」っていうことが変数のモードを見ることでわかるんだね。この変数のモードのことを「データ型」っていうよ。
さっきのプログラムをもう一度見てみよう。
a="tanaka"
b="satou"
print(a+b)
この出力結果は「tanakasatou」だね。



「+」記号は文字と文字を繋げているんだね<
これも「データ型」があるからこういうことができるんだ。プログラムは変数のデータ型を読み取って、文字列型と文字列型の足し算だから「+」の意味を「文字と文字を結合する」って判断して結果を出力しているよ。
他に整数型と整数型なら「数値の足し算をすればいいんだな」って判断したりする。ちなみに「整数型」や「浮動小数点型」と「文字列型」を足し算するとエラーになるよ。これもプログラムの中で変数のデータ型を判断して、想定していない状況かどうか判断してエラーを出しているんだ。
ちなみにプログラムの中では「整数型」は「int」、「浮動小数点型」は「float」、「文字列型」は「str」と呼ばれているよ。プログラムのエラーが出たときにintとかstrとか出てくるから覚えておこう。
まとめ
今回はこのくらいにしておきましょう。
Pythonには「変数」というものがある。また「データ型」というものがある。
この二つを今日は覚えていってください。



お疲れ様。またね
当ブログ(シルルスのコードおきば)ではPython入門用の記事を他にも執筆しています。参考になりましたら幸いです。