ゆうちゃんと変数の勉強です。変数って、さらっと流すこともできるけれど、重要ですよね。わかっておいて欲しいことがたくさんあります。ここでは「変数の型宣言」「数学との違い」について勉強します。y = x + 1はわかるけど、x = x + 1なんて、数学ではありえません。
ところで、ゆうちゃんは、Spyderを勉強しているとまわりに言っているらしく、笑ってしまいました。たしかにディスクトップのアイコンはSpyderですから、勘違いしちゃうかも。名前もスパイダーマンみたいでかっこいいし、いいかもしれない。
「PythonのanacondaのSpyderでPyrhonの勉強をしている」と説明したところで、早口言葉みたいで訳が分からないし、面白いから、しばらく放っておきましょう♪
ほらほら、ゆうちゃんが「Spyderやろ~」とやってきました。私って意地悪?
0.ゆうちゃんとPythonシリーズ
この記事は「ゆうちゃんとPythonシリーズ」の記事です。一連の記事は、以下のリンク集を参照してください。
なお、それぞれの記事は、シリーズの中でそれまでに習った文法を使ってサンプルコードを考えています。実際には、もっと、効率のよい書き方があるかもしれませんが、ご了承ください。
1.変数の型宣言
実際に自分の手でコードを入力し、実行するのがプログラム言語習得の近道です。例題をいくつか用意しましたので、参考にしてください。
(1) 例題1(値をそのまま計算する方法)
まずは、前回までの復習です。print()で出力するだけの簡単なコードですので、考えてみてください。下の「解答の表示・非表示の切り替え」の部分をクリックすると解答が表示されます。
1個10円のリンゴを50個買いました。リンゴの値段の合計を求めて出力しましょう。
解答の表示・非表示の切り替え (Google Chrome推奨)
==============(解答表示start)==============
#コード01
print(10 * 50)
#出力01
500
※ブラウザによっては、最初から解答が表示されてしまう可能性があります。
==============(解答表示end)===============
(2) 例題2(値を変数に代入して計算する方法)
例題1のコード01を、変数を使って計算すると、コード02のように書き換えることができます。 リンゴ1個の値段がx、 リンゴの個数がy、リンゴの値段の合計がzです。そして、このxとyとzが変数とよばれるものです。
#コード02
x = 10
y = 50
z = x * y
print(z)
さて、ここで注意しなければならないことは、Pythonで値をつかって何かをしようとする場合、どんな値もデータの型を示してやる必要があることです。
例えば、「3」という値を使う場合、「'3'」「3」「3.0」のように書き方を変えることで、それぞれ、「文字列」「整数」「少数」であることを示します。
ところが、変数は見た目ではデータ型の違いを区別することができません。コード02のx, y, zは、変数だけを見ても、それが整数なのか文字列なのか区別がつかないのです。
そこで、変数のデータ型は、変数に値を代入したときに決まるというルールがあります。代入した値と同じデータの型になるのです。
コード02では、2行目の「x = 50」の時にxのデータ型がintに決まります。一方、yは3行目の「y = 10 * x」のときにデータ型が整数に決まります。右辺「10 * x」は10もxも整数なので計算結果が整数になるからです。同様に変数zも4行目でデータ型が整数に決まります。
C言語では、変数を使う前に変数がどんなデータ型であるのかを宣言(型宣言)しますが、Pythonでは「わざわざ、型宣言しなくても、代入するときにわかるでしょ」という方針です。記述は簡略になりますが、その分、データの型が何なのかを気を付ける必要があります。気をつけないと整数のつもりでコードを書いていたら、少数だったということになります。
2.Pythonのイコールは、数学のイコールとは違う。
(1) 例題3
例題2では、リンゴを50個買った場合の計算でしたが、50個買ったあとに、20個のリンゴを追加購入した場合には、どのようになるでしょうか。それは、以下のコード03、コード04のようになります。
#コード03
x = 10
y = 50 + 20
z = x * y
print(z)
#コード04
x = 10
y = 50
y = y + 20
z = x * y
print(z)
この例題でのポイントは、コード04の「y = y + 20」という記述です。数学の方程式では「y = y + 20」という式は、あり得ません。y(左辺)とy +20(右辺)は必ず右辺の方が20大きくなるので、等しくならないからです。
数学のイコールは、左辺(さへん)と右辺(うへん)が等しいことを示しますが、プログラムのイコールは「右辺の計算結果の値」を「左辺の変数」に代入する命令なのです。
つまり、コード04の4行目では、まず、右辺「y + 20」の計算をします。yはこの時点ではy = 50であるため、50 + 20 = 70となり、この計算結果の値70を、左辺の変数yに代入します。
「y = y + 20」という命令文は、本当は「y← (y + 20)」の方がイメージに近いと思います。数学で変数を習いたての中学生は特に気を付けてくだい。
ゆうちゃんも「わかった。完璧!」と言っていましたが、その後、何度も間違えていました。数学と微妙に違う内容が、感覚的にとらえにくいのだと思います。
「イコール」は「計算結果の値」を「変数」に代入する命令であるということは、初心者には重要なポイントです。
だから、Pyrhonでは数学と違って、x + 5 = 20といった記述ができません。数学の感覚ならば、コンピューターがx = 15を計算してくれそうに思いますが、エラーになります。左辺に「変数名」だけではなく「+ 5」という余分なものがついているからです。これでは、右辺の値を代入する先の変数がはっきりしません。
左辺は必ず「変数名=」という形になります。
3.まとめ
(a) 変数のデータ型は、変数に値を代入した時に決まる。
(b) 「=」は左辺と右辺が等しいことを示すのではなく、右辺をまず計算し、次に「右辺の計算結果の値」を「左辺の変数」に代入する命令である。
(c) 「=」は左辺は「x + 5」といった式にはならず、「変数名=」という形になる。
私が実際に購入した教材のご紹介
以下、私が実際に購入したPythonの教材をまとめてみました。 Pythonを学習する上で、少しでもお役に立つことができればうれしいです。
・Python♪私が購入したPythonの書籍のレビュー
・UdemyのPythonの動画講座を書籍を買う感覚で購入してみた
その他
液晶ペンタブレットを買いました
(1) モバイルディスプレイを買うつもりだったのに激安ペンタブレット購入
以下、私が光回線を導入した時の記事一覧です。
(1) 2020年「光回線は値段で選ぶ」では後悔する ←宅内工事の状況も説明しています。
(2) NURO光の開通までWiFiルーターを格安レンタルできる
(3) NURO光の屋外工事の状況をご紹介。その日に開通!
(4) 光回線開通!実測するとNURO光はやっぱり速かった
(5) ネット上のNURO光紹介特典は個人情報がもれないの?