Yu'n Craft
📅 投稿日: 2017-07-06 | 📂 カテゴリ: software-crafts

いまさら始めるPython3(3)-数値と演算子の扱い

はじめに

ここでは、Pythonでの数値と演算子の扱いを紹介します。

数値を使用する目的は、主に数値の演算に使うため、合わせて演算子についても紹介しています。ただし、演算子については、最初から全て知っておかなくても、後から必要に応じて覚えればよいので、参考までに。

しかしながら、Pythonを使ってデータ分析や機械学習などを行う場合、数値や演算子をよく知っておく必要があります。

数値の型

Pythonの数値の型は、次のものがあります。

型 例
整数 123, -45, 12345678901234567890
浮動小数点数 1.23, 1.23e4, 1.23e-4
複素数 1+2j, 1.2+3.4j

整数は、短整数と長整数がありますが、短整数が演算していくなかでオーバーフローする場合は長整数に置き換えられるため、短整数、長整数を意識する必要はほぼありません。

また、メモリ上の制限を除けば、事実上、無限の桁数が使えるらしいです。(本当かどうか試したことがありませんが)

浮動小数点数は、通常の小数の表記とeを使った10の累乗の表記ができます。

複素数は、実数部+虚数部の形で表記し、虚数部の最後に「j」を付与します。

以下のようにインタープリター上で値を入力してみると、どのような数値かわかります。

>>> 123123>>> -45-45>>> 1234567890123456789012345678901234567890>>> 1.231.23>>> 1.23e412300.0>>> 1.23e-40.000123>>> 1+2j(1+2j)>>> 1.2+3.4j(1.2+3.4j)

整数の表記(2進数、8進数、16進数)

プログラムを書いていく中で、場合によっては10進数以外に2進数、8進数、16進数のような表記が必要な場合もあります。

これらについては、次のように表記します。

  • 2進数 2進数文字列の先頭に「0b」を付与 例:0b101011
  • 8進数 8進数文字列の先頭に「0o」を付与 例:0o12345670
  • 16進数 16進数文字列の先頭に「0x」を付与 例:0x1234567890abcdef

上記を試しにインタープリター上で入力すると次のようになります。(整数として出力されます)

>>> 0b10101143>>> 0o1234567342391>>> 0x1234567890abcdef1311768467294899695

数値の演算子

数値を演算することを示す演算子には次のものがあります。

演算 演算子 表記 例 演算結果(補足)
加算 + x+y 1+2 =3
減算 - x-y 4-1 =3
乗算 * x*y 2*3 =6
除算 /// x/yx//y 5/25//2 =2.5(浮動小数点)=2(整数)
剰余 % x%y 5%2 =1
累乗 ** x**y 5**2 =25

型変換

数値の型変換は、組み込み関数のint()やfloat()で行うことができます。

>>> int(2.34)2>>> float(123)123.0

論理演算子

Pythonでは、論理演算子は、if文の条件のような真/偽で使用します。

演算 演算子 表記 例 演算結果(補足)
論理和 or x or y 1 or 22 or 10 or 22 or 0 =1(0以外なら前の数字)=2(0以外なら前の数字)=2(0でない方の数字)=2(0でない方の数字)
論理積 and x and y 1 and 22 and 10 and 22 and 0 =2(0がなければ後の数字)=1(0がなければ後の数字)=0(いずれか0なら0)=0(いずれか0なら0)
論理否定 not not x not 3not 0 =False(真≠0の否定は偽)=True(偽=0の否定は真)

ビット演算子

ビット演算子は、バイナリ値(2進数)の論理演算で使用します。

演算 演算子 表記 例 演算結果(補足)
ビット論理和 x y
ビット論理積 & x & y 10&2 =2(0b1010と0b0010の論理積)
ビット排他的論理和 ^ x ^ y 10^2 =8(0b1010と0b0010の排他的論理和)
ビット反転 ~ ~ x ~10 =-11(説明はちょっと難しいので省略)
左シフト << x << y 10<<2 =40(0b1010を左に2ビットシフト)
右シフト >> x >> y 10>>2 =2(0b1010を右に2ビットシフト)

いろいろ書きましたが、今回の数字と演算子の話はここまでです。

次回は、Pythonの構文について紹介します。