そまちょブログのそまちょ(@somachob)です。
この記事では、Pythonの型と演算子について解説していきます。
型
Python の主要な型には、次のようなものがあります。
- 整数:int
- 浮動小数点数:float
- 文字列:string
- 真偽値:bool
整数
整数は、-5、8、100 などの数値です。Python では int です。
以下のコードでは、type() で型を確認し、print() で出力しています。# はコメントを表し、プログラムの実行には関係しません。
print(type(-5)) # => <class 'int'>
print(type(8)) # => <class 'int'>
print(type(100)) # => <class 'int'>
C 言語だと int 型は、-2,147,483,648 ~ 2,147,483,647 の範囲しか扱えませんが、Python では範囲の制限はありません。
数値には「_(アンダーバー)」を含めることができます。大きい桁を扱うときは、「_」を使えば数値が見やすくなるので便利です。
a = 999_999_999_999_999
print(a) # => 999999999999999
b = a + 1
print(b) # => 1000000000000000
浮動小数点数
浮動小数点数は、-3.5、4.58、10.0 などの小数のある数値です。Python では float です。
print(type(-3.5)) # => <class 'float'>
print(type(4.58)) # => <class 'float'>
print(type(10.0)) # => <class 'float'>
# 同じ10でもこれは int になる
print(type(10)) # => <class 'int'>
文字列
文字列は、「’(シングルクォーテーション)」または「”(ダブルクォーテーション)」で囲ったものです。Python では str です。
# ' または " で囲むと文字列になる
print(type('Python')) # => <class 'str'>
print(type("Hello!")) # => <class 'str'>
# 数値も ' または " で囲めば文字列になる
print(type('10')) # => <class 'str'>
print(type('10.0')) # => <class 'str'>
文字列についてはこちらの記事で詳しく解説しています。
真偽値
真偽値は、True(真)と False(偽)で表現します。Python では bool です。
print(type(True)) # => <class 'bool'>
print(type(False)) # => <class 'bool'>
条件分岐をさせる if などで、真偽値を使います。
真偽値以外でも条件分岐に使えることができ、Python ではオブジェクトは基本的に True と判定されます。
None、0、空の文字列などは False と判定されます。
if True:
print('実行される')
if 1:
print('実行される')
if 5.0:
print('実行される')
if 'Python':
print('実行される')
# 次はすべて実行されません
if False:
print('実行されない')
if None:
print('実行されない')
if 0:
print('実行されない')
if 0.0:
print('実行されない')
if '':
print('実行されない')
演算子
算術演算子、関係演算子、論理演算子について紹介します。
算術演算子
足し算、引き算、割り算、掛け算などをするのが算術演算子です。算術演算子を使うことで計算ができます。
Python では次のような算術演算子が使えます。
- +:加算
- -:減算
- *:乗算
- **:べき乗
- /:除算(浮動小数点数)
- //:除算(小数点以下切り捨て)
- %:剰余
% の剰余は、割り算の余りを求める演算子です。たとえば、「5 ÷ 2 = 2 余り 1」ですが、% を使えば、あまりの 1 を求めることができます。
print(1 + 2) # => 3
print(3 - 2) # => 1
print(2 * 3) # => 6
print(2 ** 3) # => 8
print(4 / 2) # => 2.0
print(5 / 2) # => 2.5
print(5 // 2) # => 2
print(5 % 2) # => 1
除算(/)は、計算結果が整数でも常に浮動小数点数(float 型)を返します。
// を使えば、割り算した結果の小数部分を切り捨てた整数(int 型)が返ってきます。
print(7 / 4) # => 1.75
print(type(7 / 4)) # => <class 'float'>
print(7 // 4) # => 1
print(type(7 // 4)) # => <class 'int'>
print(4 / 2) # => 2.0
print(4 // 2) # => 2
計算に float 型が混じっているときは、ほかの型も float 型として計算されます。
print(2 * 4.5 + 1) # => 10.0
print(type(2 * 4.5 + 1)) # => <class 'float'>
文字列には「+」と「*」の演算子を使うことができます。
- + 演算子:文字列を結合します。
- * 演算子:指定した回数、文字列を繰り返します。
# 文字列を結合する
print('Hello' + ' ' + 'World') # => Hello World
# 文字列を3回繰り返す
print('Python' * 3) # => PythonPythonPython
優先順位
数学の計算と同じように、「*」や「/」は、「+」や「-」よりも先に計算されます。
計算の順番を変えたいときは()を使います。
print(2 + 3 * 4) # => 14
print((2 + 3) * 4) # => 20
算術演算子の優先順位は次のようになります。
- **
- * 、 / 、 // 、 %
- + 、 –
同じ優先順位の演算子があるときは、式の左の演算子が優先されます。
# 左の / を計算してから * を計算する
print(6 / 2 * 3) # => 9.0
# 左の * を計算してから / を計算する
print(2 * 3 / 6) # => 1.0
比較演算子
数値の大小比較などをするのが比較演算子です。比較した結果として真偽値(True、False)を返します。
Python では次のような比較演算子が使えます。
- >:より大きい
- >=:より大きいか等しい(以上)
- <:より小さい
- <=:より小さいか等しい(以下)
- ==:等しい
- !=:等しくない
# より大きいか
print(5 > 2) # => True
print(5 > 10) # => False
# 以上か
print(5 >= 2) # => True
print(5 >= 5) # => True
print(5 >= 10) # => False
# より小さいか
print(5 < 10) # => True
print(5 < 2) # => False
# 以下か
print(5 <= 10) # => True
print(5 <= 5) # => True
print(5 <= 2) # => False
# 等しいか
print(5 == 5) # => True
print(5 == 2) # => False
# 等しくないか
print(5 != 2) # => True
print(5 != 5) # => False
次のように複数の値を比較することもできます。
print(1 < 3 < 10) # => True
print(1 < 10 <= 10 < 20) # => True
# int と float が混じっても問題ありません
print(2.0 <= 2 < 2.1) # => True
文字列の比較
数値だけでなく文字列も比較することができます。
大文字、小文字は区別され、文字コードが比較基準になります。
print('Python' == 'Python') # => True
print('Python' != 'Python') # => False
print('a' < 'b') # => True
print('a' == 'A') # => False
print('a' != 'A') # => True
print('a' < 'A') # => False
print('a' > 'A') # => True
print('aaa' < 'aab') # => True
print('aaa' < 'aaaa') # => True
論理演算子
「A かつ B のとき」や「A または B のとき」のようなときに使うのが論理演算子です。
Python では次のような論理演算子が使えます。
- and:論理積
- or:論理和
- not:否定
論理積
論理積は、A と B が両方とも True のとき、True を返します。
A | B | A and B |
False | False | False |
False | True | False |
True | False | False |
True | True | True |
print(False and False) # => False
print(False and True) # => False
print(True and False) # => False
print(True and True) # => True
論理和
論理和は、A か B のどちらかが True のとき、Trueを返します。
A | B | A or B |
False | False | False |
False | True | True |
True | False | True |
True | True | True |
print(False or False) # => False
print(False or True) # => True
print(True or False) # => True
print(True or True) # => True
否定
否定は、A が True のとき False を返し、False のとき True を返します。
A | not A |
False | True |
True | False |
print(not False) # => True
print(not True) # => False
優先順位
論理演算子の優先順位は次のようになります。
算術演算子のときのように演算子の順番を変えたいときは()を使います。
- not
- and
- or
print(False and True or True) # => True
print(not (False and True) or True) # => True
print(not False and (True or True)) # => True
print(not (False and True or True)) # => False
演算子の優先順位
算術演算子、比較演算子、論理演算子での優先順位は次のようになります。
- ()
- **
- *、/、//、%
- +、-
- not、<、<=、>、>=、==、!=
- and
- or
まとめ
主要な型には、次のようなものがあります。
- 整数:-5、8、100のような数値
- 浮動小数点数:-3.5、10.0のような少数のある数値
- 文字列:「’(シングルクォーテーション)」または「”(ダブルクォーテーション)」で囲ったもの
- 真偽値:True と False
演算子には、次のようなものがあります。
- 算術演算子
- 関係演算子
- 論理演算子
演算子の優先順位は次のようになります。
- ()
- **
- *、/、//、%
- +、-
- not、<、<=、>、>=、==、!=
- and
- or