![]()
5.数値や文字の話 (2015.2.17-2020.2.26)
Pythonに標準で用意されている型(データの種類)を「組み込み型」と言います。これまでに出て来た整数や文字列等がそうです。一方、コンピューターではデータの入れ物を変数と言います。コンパイラを使用するC言語等は、あらかじめ変数の型を指定する必要がありますが、インタープリタ型のPythonでは、データを代入した時に自動的に型が決められます。変数にデータを代入するには、
変数 = データ(オブジェクト)
と書きます。オブジェクトであるデータは数値や文字列等、色々なものが指定できます。自動で型が決められるため、例えば同じ変数に対して文字列を入れた後に数値を入れることも可能です(代入後にそれぞれの型になる)。変数名には次の制限があるので注意して下さい。
●使える文字は半角の英数字とアンダースコア( _ )のみ
●大文字と小文字は区別される
●数字から始まる名前は不可
●Pythonの予約語は不可
他にもPythonの組み込みメソッドや組み込み関数等と同じ名前を付けないようにする等、ルール上は可能であっても重複することで予想外の動作を起こす可能性のある命名は避けなければなりません。型には前述したように数値型や文字型等があります。
■数値型
Pythonの数値型には整数型、浮動小数点型、複素数型の3つがあり、通常は前2者が使われます。
整数型は小数点以下を含まない数値で正負の値をとります。プログラムにおいて、10進数はそのまま記述し、2進数では数値の前に0b(0B)を、16進数では数値の前に0x(0X)を付けることになっています。(先頭は数字のゼロ)
浮動小数点型は小数点以下の値を持つ数値で、仮数部と指数部の組み合わせで表現されます。例えば123.456は仮数部が1.23456、指数部が10の2乗となります。非常に大きな数を扱えるので、コンピューターでも多く使われます。
ブール型は前章で述べたように真と偽の2つの状態を持つ型で、主に条件分岐等の演算処理で使われます。数値の1と0でも同じような判定ができますが、ブール型を使った方がわかり易くなります。
■数値の計算
Pythonでも算数の計算と同じように、+や-等の演算子を使った計算を行います。掛け算に*を使うコンピューター独特の表現もありますが、扱う演算に違いはありません。演算子も当然半角なので入力の際は注意して下さい。算術演算を短縮して表現する「複合代入演算子」と言うものもあります。例えば、
y += x
と書けば、yにxを足してyに代入することを意味します。他にも色々あるので、詳しくはテキストを参照して下さい。慣れないうちは無理に使うことも無いので、こういうものもあることだけ覚えておけば良いでしょう。
■ビット演算子
ビット演算子は実際の機器制御等でよく使われます。2進数にした場合の各ビットに対して操作を行う演算なので、ビットを信号線に置き換えればわかり易いと思います。重要なのでこれについては次章で詳しく扱います。
■文字列
文字通り、文字の並んだデータを表します。プログラミングの最初に出て来たので覚えていると思いますが、文字列を記述するには文字列をシングルコーテーション(またはダブルコーテーション)で囲います。例えば変数aに文字列Pythonを代入して結果を表示する場合は、Python2系では
>>> a = 'Python'
>>> print a
Python
となるわけです。Python3系ではprint文は関数になったため、print(a)と書きます。
■シーケンス型
文字列のように複数の要素(この場合複数の文字)が順番に並んだデータ型をシーケンス型と呼びます。要素には前から順番にインデックスと呼ばれる番号が付けられています。上記の例で見ると、変数aの最初のインデックス番号0で指定される文字は、Pの文字になります。プログラムではa[0]と指定します。
>>> a = 'Python'
>>> a[0]
'P'
シーケンス型とは、一般的な配列を文字列に当てはめたような感覚です。因みに後ろから指定する場合は、最後の文字のインデックス番号が-1となります。なお、数値型は1文字だけ取り出しても意味が無いので、インデックスは使えません。
Pythonのシーケンス型は、ある範囲の中の複数の要素(文字列ならある範囲内の文字)を一度に指定することもできます。これも上記の例を使えば、変数aの最初のインデックス番号0から2文字(範囲は0と1)を指定すると、Pyの文字になります。プログラムではa[0: 2] と指定します。
>>> a = 'Python'
>>> a[0: 2]
'Py'
■エスケープシーケンス
文字列の中にコーテーション等の予約記号を記述したい場合、エスケープシーケンスと呼ばれる方法を使います。どのようにするかと言うと、記述したい文字の前に半角のバックスラッシュ(\)を書きます。Windowsでは¥になってしまいますが、Raspbian(Linux)上ではきちんと表示されます。(下のスクリーンショットを参照)
>>> a = '\"Python\"'
>>> print a
"Python"
前述の通り、Python2系と3系ではprint文の記述が異なるので注意して下さい。なお、Pythonの場合は次のようにエスケープシーケンスに三重のコーテーションで囲うこともできます。
>>> a = '''"Python"'''
>>> print a
"Python"

文字列を操作する組み込みメソッドは色々用意されています。例えば文字列の一部を入れ替えたり、文字列を連結したり、文字数を調べたりするもの等です。詳しくはテキストを参照して下さい。下記の演算子を使って文字列を繰り返す方法は、私の知識では他の言語で見たことが無かった(Perl等にはあるようです)ので覚え書きしておきます。
>>> a = 'Python'
>>> a * 3
'PythonPythonPython'
<追記(2020.2.26)>
下図はエスケープシーケンスの最初の例をRaspberry Pi上で実行したものです(プログラムのスクリーンショット)。繰り返しになりますがWindowsの場合の¥記号では無く、バックスラッシュになっていることに注意して下さい。

![]()