今回はプログラミングの基本である条件分岐と演算子について学んでゆきます。
条件分岐
条件分岐(if
文)は、プログラムにおいて特定の条件が満たされた場合にのみ実行する処理を指定するための構文です。
条件分岐を使うことで、プログラムに柔軟性を持たせ、状況に応じて異なる動作をさせることができます。
Pythonでは、if
、elif
、else
を使って条件分岐を表現します。
if 条件:
# 条件がTrue(真)のときに実行する処理
elif 別の条件:
# 別の条件がTrueのときに実行する処理
else:
# すべての条件がFalse(偽)のときに実行する処理
if
文
if
文は、最初に評価される条件です。
この条件が True
(真)であれば、その直後のコードブロックが実行されます。
x = 10
if x > 5:
print("xは5より大きい")
elif
文
elif
(else if)は、if
の条件が False
だった場合に、次に評価される条件です。
複数の条件を評価したい場合に使います。
x = 10
if x > 15:
print("xは15より大きい")
elif x > 5:
print("xは5より大きいが15以下")
else
文
else
は、すべての if
や elif
の条件が False
のときに実行されるコードブロックです。
条件がないため、どの条件も満たされない場合に必ず実行されます。
x = 2
if x > 5:
print("xは5より大きい")
elif x > 3:
print("xは3より大きい")
else:
print("xは3以下です")
ネストした条件分岐
if
文の中にさらにif
文を入れることができます。これを「ネスト」といいます。
ネストを使うことで、さらに複雑な条件処理が可能になります。
x = 10
y = 20
if x > 5:
if y > 15:
print("xは5より大きく、yは15より大きい")
演算子
演算子は、プログラム中で値に対して操作を行うための記号です。
ここでは、算術演算子、代入演算子、比較演算子、論理演算子、ビット演算子、そして演算子の優先順位を見ていきます。
算術演算子
算術演算子は、数値の計算に使われます。
+
: 足し算-
: 引き算*
: 掛け算/
: 割り算(結果は小数)//
: 割り算(結果は整数)%
: 剰余(割った後の余り)**
: べき乗(累乗)
a = 10
b = 3
print(a + b) # 足し算: 13
print(a - b) # 引き算: 7
print(a * b) # 掛け算: 30
print(a / b) # 割り算: 3.3333...
print(a // b) # 整数の割り算: 3
print(a % b) # 剰余: 1
print(a ** b) # べき乗: 1000(10の3乗)
代入演算子
代入演算子は、変数に値を代入するために使われます。最も基本的なものは =
ですが、他にも組み合わせた演算子があります。
=
: 代入+=
: 足して代入-=
: 引いて代入*=
: 掛けて代入/=
: 割って代入%=
: 剰余を代入**=
: 累乗を代入
x = 5
x += 2 # 5に2を足す: x = 7
x *= 3 # 7に3を掛ける: x = 21
比較演算子
比較演算子は、2つの値を比較し、結果として True
または False
を返します。
==
: 等しい!=
: 等しくない>
: より大きい<
: より小さい>=
: 以上<=
: 以下
a = 10
b = 5
print(a == b) # False(10と5は等しくない)
print(a != b) # True(10と5は等しくない)
print(a > b) # True(10は5より大きい)
print(a <= b) # False(10は5より大きいので、5以下ではない)
論理演算子
論理演算子は、条件を組み合わせるときに使います。条件が True
か False
かで処理を行います。
and
: 両方の条件がTrue
ならTrue
or
: どちらかの条件がTrue
ならTrue
not
: 条件がTrue
ならFalse
、False
ならTrue
a = True
b = False
print(a and b) # False(片方がFalseなので)
print(a or b) # True(片方がTrueなので)
print(not a) # False(Trueの反対)
ビット演算子
ビット演算子は、整数のビットごとの演算を行います。これらはあまり高校生が日常で使うことは少ないかもしれませんが、デジタル回路や低レベルプログラミングに関連します。
&
: ビットごとの AND|
: ビットごとの OR^
: ビットごとの XOR~
: ビットの反転(NOT)<<
: ビット左シフト>>
: ビット右シフト
a = 60 # 2進数で: 0011 1100
b = 13 # 2進数で: 0000 1101
print(a & b) # AND: 0000 1100 -> 12
print(a | b) # OR: 0011 1101 -> 61
print(a ^ b) # XOR: 0011 0001 -> 49
print(~a) # NOT: 1100 0011 -> -61(符号付きビット表現)
演算子の優先順位
演算子には、優先順位があります。これにより、式がどの順序で評価されるかが決まります。例えば、掛け算と足し算が混在する場合、掛け算が先に行われます。
優先順位の一例は以下の通りです(高いものが先に評価されます):
**
(べき乗)*
,/
,%
,//
(掛け算、割り算、剰余、整数割り算)+
,-
(足し算、引き算)==
,!=
,>
,<
,>=
,<=
(比較演算子)not
(論理否定)and
(論理積)or
(論理和)
x = 5 + 3 * 2 # 掛け算が優先されるので: 5 + (3 * 2) = 11
y = (5 + 3) * 2 # カッコで足し算を優先させる: (5 + 3) * 2 = 16
print(x, y)
課題
数値の操作と条件判断を含むプログラムを作成しなさい。
- 初期値
a = 20
、b = 15
、c = 10
を設定しなさい。 a
を 2 で割った余りをc
に代入しなさい。a
をビット左シフトしてb
に代入し、a
を2倍にしなさい。a
が 30 より大きいかつb
が 50 より小さい場合に「条件を満たしました」と表示し、それ以外の場合には「条件を満たしていません」と表示しなさい。- 最後に、
a
,b
,c
の値をすべて表示しなさい。
解答はこちらをクリック
# 1. 初期値を設定
a = 20
b = 15
c = 10
# 2. aを2で割った余りをcに代入
c = a % 2
# 3. aをビット左シフトしてbに代入し、aを2倍に
b = a << 1 # ビット左シフト
a *= 2 # aを2倍に
# 4. 条件に基づいてメッセージを表示
if a > 30 and b < 50:
print("条件を満たしました")
else:
print("条件を満たしていません")
# 5. a, b, cの値を表示
print("a:", a)
print("b:", b)
print("c:", c)
次回はこちら