【基礎文法】Pythonで使える数値型と演算子

スポンサーリンク
Python_基本文法_数値型と演算子 Python

Pythonで使える数値型と演算子

Pythonで扱える数値型は、整数浮動小数点2進数16進数といった一般的なものから、複素数までの数値を扱うことができます。これは、Pythonが数値解析や行列演算、科学分析といった用途に使われることが多い言語であるといった特徴を示しているとも言えます。

本記事では、導入としてPythonで使える数値型とその演算子の概要を解説しています。より発展した内容は別記事で紹介する予定です。

重要度:★★★★★

スポンサーリンク

1. 数値型

数値リテラルには整数(integer),浮動小数点(floating point number), 虚数 (imaginary numbers)の3種類ありますので順に説明していきます。

Python 公式ドキュメント

https://docs.python.org/ja/3.6/library/stdtypes.html#typesnumeric

1.1. 整数(integer)

整数

整数(整数リテラル):実数のうち小数点以下がない値(0や負の値も含む)

整数は、小数点以下がない数値のことをいいます。負数や0を含めて定義し、四則演算などを行うことができます。数値は整数に限らず通常10進数で表しますが、識別子を付加することで2進数や16進数で表すこともできます。


例1.次は整数の取り扱い例の紹介です。正数、ゼロ、負数はもちろん、数字の大きさには制限がなく(メモリに格納できる範囲内で)大きな値を表現することができます。また、他言語のように数値の取り扱いできる範囲指定・宣言(ビット指定)は不要です(integer, double など)。

print(5)    # 5
print(0)    # 0
print(-5)   # -5

# 整数リテラルの長さには制限はない(メモリに格納出来うる範囲において)
print(2147483647)   # 2147483647
print(7922816251426433759354395033)     # 7922816251426433759354395033

# アンダースコアを使って数値をグループ化することで分かりやすくすることができる
print(100_000_000_000)      # 100000000000

アンダースコア(_)は整数リテラルを判断するにあたっては無視されるので、数字をグループ化することで可読性を高めることができる。(Python 3.6以降)

例2.整数どおしの四則演算の例を示します。その他の演算子については2.項で紹介します。

print(100 + 10)     # 110   加算
print(100 - 10)     # 90    減算
print(100 * 10)     # 1000  乗算
print(100 // 10)    # 10    商
print(100 % 3)      # 1     剰余

例3.整数は次の示す識別子で底を変更し(10進数から)2進数(0b__)8進数(0x__)16進数(0x__)で表現することができます。また、➀➂➄のように同じ底どうしで演算できますし、➆のように底が揃ってなくても問題なく演算できます。通常、演算結果は10進数に変換されますが、2進数で出力したい場合bin()関数をつけることで可能となります。➁➃➅

#2進数(0b____)
print(0b0000)                # 0
print(0b0101)                # 5
print(0b1111)                # 15
print(0b0001 + 0b1010)       # 11       ※➀ 1 + 10
print(bin(0b0001 + 0b1010))  # 0b1011   ※➁ ➀の結果を2進数で出力

#8進数(0o____)
print(0o000)                 # 0
print(0o010)                 # 8
print(0o777)                 # 511
print(0o001 + 0o010)         # 9        ※➂ 1 + 8
print(bin(0o001 + 0o010))    # 0b1001   ※➃ ➂の結果を2進数で出力


#16進数(0x____)
print(0x00)                 # 0
print(0x10)                 # 16
print(0xFF)                 # 255
print(0x01 + 0x10)          # 17        ※➄ 1 + 16
print(bin(0x01 + 0x10))     # 0b10001   ※➅ ➄の結果を2進数で出力

#2,8,16進数間での演算
print(0b0001 + 0o010 + 0x10)    # 25    ※➆ 1 + 8 + 16

1.2. 浮動小数点(floating point number)

浮動小数点

浮動小数点(浮動小数点リテラル): 実数のうち小数点以下を含むもの

浮動小数点は、小数点をともなう実数を表します。四則演算も行えますし、桁数が多い場合は指数表記が使えます。整数との演算では浮動小数点型にキャストされます。


例1.次は浮動小数点を表す例を紹介しています。小数点を含む正負の実数を表現することができます。また、整数部分や小数点以下の0は省略可能で、結果には0が自動的に追加されます。

整数同様に他言語で指定するような実数の取り扱いできる範囲指定・宣言(ビット指定)は不要です。(single, float など)

print(0.08)                 # 0.08
print(98.5)                 # 98.5
print(2343324234.200013134) # 2343324234.200013
print(-3.5)                 # -3.5      負数でも表現可

# "0 ""表記の省略
print(.123)     # 0.123     整数部の0を省略した場合
print(10.)      # 10.0      小数点以下の0を省略した場合

例2. 次のように大きな桁数を表現する際には指数表記を使うことができます。指数表記の”e”はExponet(10を底とした指数)を表します。大文字”E”と記述しても同じです。

また、実数の演算結果が整数にキャストすることはありません。(➀)整数同様に”_”で区切り文字を使用しても結果に影響を与えません。(➃)

print(1.23e+7)      #➀ 12300000.0   ※ 小数点以下は追加される
print(9.7e-4)       #➁ 0.00097      ※ eの定数に負数を使うと(1/10)の累乗と同義

print(0e0)          #➂ 0.0
print(3.14_15_93)   #➃ 3.141593      # _による区切り文字も有効(整数同様)

例3.実数の計算例を紹介します。実数同士、また整数と実数といった計算ができますが全て結果は実数にキャストされます(➂,➃)。また、例外として整数同士の除算は実数になります。➄

print(10.3 + 0.5)   # 10.8      ※➀ 実数 + 実数
print(10.3 - 0.5)   # 9.8       ※➁ 実数 - 実数
print(100 * 0.2)    # 20.0      ※➂ 整数 * 実数
print(1.08 * 100)   # 108.0     ※➃ 実数 * 整数

print(100/2)        # 50.0      ※➄ 整数 / 整数

1.3. 虚数 (imaginary numbers)

虚数

虚数: j(J) 2乗すると-1となる値のこと。複素数とは、実部+虚数で表す。

一般的に数学ではiと表されますが、Pythonではjと表記します。標準ライブラリとしてすぐに使用できる点が、数値解析や演算を得意とするPythonならではの特徴といえます。


例1. 次は虚数の使用例を示しています。➀のようにjの二乗で-1となっており虚数を表すことができています。また、(実部部+虚数部)といった表記に自動で変換されます。虚部のみの場は”()”は付きません。また、虚部には実数を指定することもでき、1.2項の浮動小数点のルールが適用されます。(➃~➈)

print(1j * 1j)      # (-1+0j)   ※➀ jの自乗は-1となる(定義そのもの)
print(10j)          #  10j      ※➁ 虚部のみ
print(2 + 3j)       # (2+3j)    ※➂ 実部+虚部

print(3.14j)        # 3.14j     ※➃ 実数を虚部にした場合
print(10.j)         # 10j       ※➄ 実数を虚部にした場合(.前後の0は省略可)
print(.001j)        # 0.001j    ※➅ 実数を虚部にした場合(.前後の0は省略可)
print(1e100j)       # 1e+100j   ※➆ 指数表記した虚部
print(1e-100j)      # 1e-100j   ※➇ 指数表記した虚部
print(3.14_15_93j)  # 3.141593j ※➈ _による区切り文字も使用可能

例2.複素数は数値型や複素数どうしで演算することができます。次はその実例を示しています。(演算の種類については2項で説明します。)

comp1 = 10 + 20j
comp2 = 30 + 40j

print(comp1 + comp2)    # (40+60j)      ※➀ 加算
print(comp1 - comp2)    # (-20-20j)     ※➁ 減算
print(comp1 * comp2)    # (-500+1000j)  ※➂ 乗算

例3.複素数を扱うメソッドと関数が用意されています。

“real”メソッドを使うことで複素数の実部、“imag”メソッドで虚部を取り出すことができます。さらに、“complex(実部, 虚部)”関数で複素数を作ることができます。

comp1 = 10 + 20j
print(comp1.real)       # 10    ※➀ 複素数の実部
print(comp1.imag)       # 20    ※➁ 複素数の虚部

#----------------------------------------------------------

comp2 = complex(3, 2)
print(comp2)                # (3+2j)    ※➂ 複素数の生成

comp3 = complex("1+2j")     # (1+2j)    ※➃  複素数の生成(文字列による生成)
print(comp3)

2. 数値演算子

数値の演算に使うために数値演算子があります。既に本記事内において使用していますが、ここで改めて解説します。

Python 公式ドキュメント

https://docs.python.org/ja/3.6/reference/lexical_analysis.html#operators

2.1 数値演算子

数値 演算子

数値の演算で使用できる演算子一覧

演算子使用例概要説明
+a + baとbの加算
a – baとbの減算
*a * baとbの乗算
/a / baとbの除算
//a // baをbで割った商の整数値
%a % baをbで割った余りの整数値(剰余)
**a**naをn回掛けた値(べき乗、累乗)

例1. 次はPythonで使える数値演算子7種類の使用例を示しています。既掲のものもありますが、Python特有の表記法としてはべき乗(累乗)があるでしょう。➇

また、除算の商・剰余の演算(➄➅)も他言語とは異なるものありますので抑えておきましょう。

print(100 + 10)     # 110       ※➀ 加算
print(100 - 10)     # 90        ※➁ 減算
print(100 * 10)     # 1000      ※➂ 乗算
print(100 / 3)      # 33.333333333333336  ※➃ 除算
print(100 // 3)     # 33        ※➄ 商
print(100 % 3)      # 1         ※➅ 剰余
print(2**3)         # 8         ※➆ べき乗(累乗)

3. まとめ

最後に、この記事のまとめになります。

  • 数値型には整数型、浮動小数点、虚数がある。
  • 数値の大きさ(桁数)の指定は不要である。
  • 標準で虚数を扱うことができる。
  • 数値演算子には7種類がある。

最後までお読み頂きありがとうございました。

次の記事では、文字列リテラルについて解説します。

タイトルとURLをコピーしました