python入門: 3. データの型
では, pythonの基礎を少しずつ学んでいこう。最初は, pythonでどのように情報(データ)を扱うか, その基礎を学ぶ。まず, pythonシェル(ipython3)を立ち上げて(jupyter notebookでもよい), 以下を打ってみよう(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)という仕組みで表現されるからだ。詳しいことはそのうち学ぼう。
[レポート課題3-1] pythonシェルで以下の命令をやってみよ。意味を考えよ。
x=2e3 x x=2e-3 x
解説: このように, 「数値e数値」という表現法も, 計算機ではよく使う。その意味をしっかり理解しよう。
(ブラウザの戻るボタンで戻って下さい)
Keyword(s):
References:[python入門]