インデントによる構文
Pythonでは、インデント(字下げ)によってコードブロックを表します。インデントには4スペースを使うのが一般的です。
python
if True: print("これはインデントされています") # このブロックは実行される print("ここも同じブロック")print("これはインデント外") # if とは無関係重要: Pythonのインデントは構文の一部です。インデントが正しくないと
IndentationErrorが発生します。
python
if True:print("IndentationError!") # エラー: インデントがないif … else による条件分岐
else を使うと、条件が False のときの処理を記述できます。
python
def classify_number(x): if x >= 0: return "非負の数" else: return "負の数"classify_number(5) # "非負の数"classify_number(-3) # "負の数"classify_number(0) # "非負の数"if … else の短縮形
単純な場合は、条件式(三項演算子)で一行に書けます。
python
x = 10result = "正" if x > 0 else "0以下"result # "正"if … elif … else による条件分岐
複数の条件を順番に確認したい場合は elif を使います。
python
def grade(score): if score >= 90: return "A" elif score >= 80: return "B" elif score >= 70: return "C" elif score >= 60: return "D" else: return "F"grade(95) # "A"grade(83) # "B"grade(72) # "C"grade(55) # "F"ポイント:
elifは上から順に評価されます。最初にTrueとなった条件のブロックが実行され、残りはスキップされます。
条件の順序に注意
python
def classify(x): # 悪い例:条件の順序が間違っている if x > 0: return "正の数" elif x > 100: # ここには絶対に到達しない! return "大きな数"python
def classify(x): # 良い例:より厳しい条件を先に書く if x > 100: return "大きな数" elif x > 0: return "正の数" elif x == 0: return "ゼロ" else: return "負の数"ネストした条件分岐
if 文の中に if 文を入れ子(ネスト)にすることができます。ただし、深くなりすぎるとコードが読みにくくなるため注意が必要です。
python
def classify_triangle(a, b, c): """三角形の種類を返す""" # まず三角形が成り立つか確認 if a + b <= c or b + c <= a or c + a <= b: return "三角形ではない" # 正三角形 if a == b == c: return "正三角形" # 二等辺三角形 if a == b or b == c or c == a: return "二等辺三角形" # 直角三角形(辺の長さが整数の場合) sides = sorted([a, b, c]) if sides[0]**2 + sides[1]**2 == sides[2]**2: return "直角三角形" return "不等辺三角形"classify_triangle(3, 4, 5) # "直角三角形"classify_triangle(5, 5, 5) # "正三角形"classify_triangle(5, 5, 3) # "二等辺三角形"classify_triangle(1, 2, 10) # "三角形ではない"練習: fizzbuzz
整数 n を受け取り、以下のルールで文字列を返す関数 fizzbuzz(n) を定義してください。
nが3の倍数なら"Fizz"nが5の倍数なら"Buzz"nが3と5の両方の倍数なら"FizzBuzz"- それ以外は
nを文字列に変換して返す
練習: season
月番号(1〜12)を受け取り、季節を返す関数 season(month) を定義してください。
- 3〜5月: 「春」
- 6〜8月: 「夏」
- 9〜11月: 「秋」
- 12〜2月: 「冬」