とらりもんHOME  Index  Search  Changes  Login

python入門: データの型

では, pythonの基礎を少しずつ学んでいこう。最初は, pythonでどのように情報(データ)を扱うか, その基礎を学ぶ。まず, pythonシェル(ipython3)を立ち上げて, 以下を打ってみよう(In [ ]:の右のところだけ打てばよい。Out[ ]以下はpythonが返してくる答なので君は打つ必要はない):

In [1]: x=3
In [2]: x
Out[2]: 3

ここでx=3というのは, xという変数に3という数値を代入せよというコマンド(命令)である。「変数」とか, 変数に値を「代入する」とかは, 普通の数学と同じような概念や操作である。その次のxというのは, xの内容を表示せよというコマンドである。

では, 続けて次を打ってみよう:

In [3]: type(x)
Out[3]: int

このtype(x)というのは, xがどのようなのものか?と聞いている。そして, pythonからの解答はintであった。この「型」とか「int」の意味は後で学ぶので, 続けて以下を打って欲しい:

In [4]: y=3.0
In [5]: y
Out[5]: 3.0
In [6]: type(y)
Out[6]: float

ここで, yは3.0というふうに, わざと小数点つきの表現をした。すると, yの型はfloatというものだとわかった。気になることが増えてきたが, 説明は後回しにして, どんどん進もう。次を打ってみよう:

In [7]: z="University of Tsukuba"
In [8]: z
Out[8]: 'University of Tsukuba'
In [9]: type(z)
Out[9]: str

こんどは変数zに, 我々の大学の名前を「代入」した。これは数値ではないから, もはや数学的な意味での変数や代入ではなくなっている。それでもpython業界やIT業界ではzを変数と呼ぶのだ。そしてzの型はstrというものだった。いろいろ気になる気持ちを抑えて, 次を打ってみよう:

In [10]: x+y
Out[10]: 6.0

これはわかるだろう。xとyを足し算せよという命令であり, pythonは正しい答えを出している。では次はどうだろう?

In [11]: x+z
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-12-67f19d914e73> in <module>()
----> 1 x+z

TypeError: unsupported operand type(s) for +: 'int' and 'str'

なんか変なのが出てきた。TypeErrorと言っている。最後のメッセージを和訳すると, 「型のエラー: intとstrに対して+という演算なんか知らねーよ!怒」となる。

なぜこんなエラーが出たのだろうか? 簡単な話である。x, すなわち3という数と, z, すなわちUniversity of Tsukubaという文を「足し算する」というのは無意味で無茶な命令であり, pythonが怒るのも無理はない。

そういう考えで上のエラーメッセージを見ると, intというのはxの型, strというのはzの型である。実はintは「整数」(integerの略), strは「文字列」(文字を並べたもの, つまり文章。stringの略)を意味する。そして, 「型」とは, このようにデータ(3とかUniversity of Tsukubaとか)がどのような種類のものかを表す属性である。

データの「型」という概念は, pythonに限らずほぼ全てのプログラミング言語に存在する, とても大切な概念である。型を適切に意識してプログラムを組んだりデータを整形したりしないと, 計算機は正しく動かない。

ちなみに, floatは「実数」の型である。英語のfloatの直接的な意味は「浮く」である。なんで「浮く」が「実数」を意味するのか? それは, 計算機の内部では実数は「浮動小数点数」(floating point number)という仕組みで表現されるからだ。詳しいことはそのうち学ぼう。

課題: pythonシェルで以下の命令をやってみよ。意味を考えよ。

x=2e3
x
x=2e-3
x

解説: このように, 「数値e数値」という表現法も, 計算機ではよく使う。その意味をしっかり理解しよう。

(ブラウザの戻るボタンで戻って下さい)

Last modified:2019/04/10 07:47:44
Keyword(s):
References:[python入門]