Python♪基本:変数の型宣言は?数学の文字式・方程式との違いは?

 ゆうちゃんと変数の勉強です。変数って、さらっと流すこともできるけれど、重要ですよね。わかっておいて欲しいことがたくさんあります。ここでは「変数の型宣言」「数学との違い」について勉強します。y = x + 1はわかるけど、x = x + 1なんて、数学ではありえません。

 ところで、ゆうちゃんは、Spyderを勉強しているとまわりに言っているらしく、笑ってしまいました。たしかにディスクトップのアイコンはSpyderですから、勘違いしちゃうかも。名前もスパイダーマンみたいでかっこいいし、いいかもしれない。
 「PythonのanacondaのSpyderでPyrhonの勉強をしている」と説明したところで、早口言葉みたいで訳が分からないし、面白いから、しばらく放っておきましょう♪
 ほらほら、ゆうちゃんが「Spyderやろ~」とやってきました。私って意地悪?

0.ゆうちゃんとPythonシリーズ

この記事は「ゆうちゃんと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の動画講座を書籍を買う感覚で購入してみた