第4章 演算子

Pythonで学ぶべき主要な演算子は以下のようになります。

算術演算子

算術演算子は数値を操作するために使用されます。これには加算、減算、乗算、除算、剰余、べき乗、整数除算などが含まれます。

# 加算
print(5 + 2)  # 結果: 7

# 減算
print(5 - 2)  # 結果: 3

# 乗算
print(5 * 2)  # 結果: 10

# 除算
print(5 / 2)  # 結果: 2.5

# 剰余
print(5 % 2)  # 結果: 1

# べき乗
print(5 ** 2)  # 結果: 25

# 整数除算
print(5 // 2)  # 結果: 2


代入演算子

代入演算子は変数に値を代入するために使用されます。また、他の演算子と組み合わせて、演算と代入を一度に行うことも可能です。

# 代入
a = 5
print(a)  # 結果: 5

# 加算と代入
a += 2
print(a)  # 結果: 7

# 減算と代入
a -= 2
print(a)  # 結果: 5

# 乗算と代入
a *= 2
print(a)  # 結果: 10

# 除算と代入
a /= 2
print(a)  # 結果: 5.0


比較演算子

比較演算子は二つの値を比較し、その結果をブーリアン(真または偽)で返します。これには等しい、等しくない、より大きい、より小さい、より大きいまたは等しい、より小さいまたは等しいが含まれます。

# 等しい
print(5 == 2)  # 結果: False

# 等しくない
print(5 != 2)  # 結果: True

# より大きい
print(5 > 2)  # 結果: True

# より小さい
print(5 < 2)  # 結果: False

# より大きいまたは等しい
print(5 >= 2)  # 結果: True

# より小さいまたは等しい
print(5 <= 2)  # 結果: False


論理演算子

論理演算子は真偽値(ブール値)の演算に使われます。これにはandornotが含まれます。

# and 演算子
print(True and False)  # 結果: False

# or 演算子
print(True or False)  # 結果: True

# not 演算子
print(not True)  # 結果: False


メンバーシップ演算子

メンバーシップ演算子はシーケンス(リストや文字列など)内のメンバーシップをテストするために使用されます。

# メンバーシップ演算子
my_list = [1, 2, 3, 4, 5]
print(3 in my_list)  # 結果: True
print(6 in my_list)  # 結果: False

アイデンティティ演算子

アイデンティティ演算子は二つの変数が同じオブジェクトを指しているかどうかをチェックするために使用されます。

# アイデンティティ演算子
a = [1, 2, 3]
b = a
c = [1, 2, 3]
print(a is b)  # 結果: True
print(a is c)  # 結果: False


ビット演算子

ビット演算子は、整数を2進数表現(ビット)に変換した上で、ビットごとに演算を行うものです。以下に主なビット演算子とその使い方を示します。

ビット単位のAND: &
a = 60  # 60 = 0011 1100 
b = 13  # 13 = 0000 1101 
print(a & b)  # 結果: 12 (0000 1100)
# 各ビット列で両方が1の場合のみ1となります


ビット単位のOR: |
a = 60  # 60 = 0011 1100 
b = 13  # 13 = 0000 1101 
print(a | b)  # 結果: 61 (0011 1101)
# 各ビット列で少なくとも片方が1の場合に1となります


ビット単位のXOR: ^
a = 60  # 60 = 0011 1100 
b = 13  # 13 = 0000 1101 
print(a ^ b)  # 結果: 49 (0011 0001)
# 各ビット列で片方だけが1の場合に1となります(両方が1の場合は0となります)


ビット単位のNOT: ~
a = 60  # 60 = 0011 1100 
print(~a)  # 結果: -61 (1100 0011)
# 全てのビットを反転させます(0は1に、1は0に)。この結果は2の補数表現となります。


左シフト: <<
a = 2  # 2 = 0000 0010
print(a << 2)  # 結果: 8 (0000 1000)
# 全てのビットを左に指定されたビット数だけシフトします(右には0が追加されます)


右シフト: >>
a = 8  # 8 = 0000 1000
print(a >> 2)  # 結果: 2 (0000 0010)
# 全てのビットを右に指定されたビット数だけシフトします(左には0が追加されます)


演算子の優先順位

Pythonでは、複数の演算子が1つの式に含まれている場合、演算子の優先順位に基づいてどの演算が最初に行われるかが決まります。以下に、Pythonでの演算子の優先順位を高い順から低い順に示します。

  1. 括弧 (()): 括弧内の演算が最も優先されます。括弧は優先順位を明示的に制御するために使われます。
  2. 指数 (**): 指数演算子は右から左に適用されます。
  3. 符号 (+x, -x): 正の値または負の値を示します。
  4. 乗除算 (*, /, //, %): これらの演算子は左から右に適用されます。
  5. 加減算 (+, -): これらの演算子も左から右に適用されます。
  6. 比較 (==, !=, <, <=, >, >=): 比較演算子も左から右に適用されます。
  7. ビット単位のシフト (<<, >>): これらの演算子も左から右に適用されます。
  8. ビット単位のAND (&): ビット単位のAND演算。
  9. ビット単位のXOR (^): ビット単位のXOR演算。
  10. ビット単位のOR (|): ビット単位のOR演算。
  11. 論理演算 (and, or): 論理演算子は左から右に適用されます。

優先順位が同じ演算子がある場合、演算子の適用順序は左から右になります。ただし、指数演算子(**)のみが例外で、右から左に適用されます。


演算子の優先順位の実例

まずは、加算演算子(+)と乗算演算子(*)の優先順位について見てみましょう。

# コード例
print(3 + 4 * 5)  # 乗算の方が加算より優先順位が高いため、4 * 5を最初に計算します

# 出力結果
23

ここで、括弧を使うと、加算が先に行われます。

# コード例
print((3 + 4) * 5)  # 括弧内の加算が最初に行われます

# 出力結果
35

次に、論理演算(and, or)と比較演算(==, <, >, !=, <=, >=)の優先順位について見てみましょう。

# コード例
x = 7
print(x > 5 and x < 10)  # 比較演算が論理演算より優先順位が高いため、x > 5とx < 10を最初に評価します

# 出力結果
True

これらの例は、Pythonの演算子の優先順位を理解するための基本的なものです。複雑な式を書くときは、優先順位を明確にするために括弧を使用することをおすすめします。


練習問題1.

以下のコードの出力結果を予測してください。

a = 15
b = 4
print(a // b)
print(a % b)


練習問題2.

以下のコードの出力結果を予測してください。

x = 10
y = 12
print(x == y)
print(x != y)
print(x < y)
print(x > y)
print(x <= y)
print(x >= y)


練習問題3.

以下のコードの出力結果を予測してください。

x = True
y = False
print(x and y)
print(x or y)
print(not x)