第3回:制御構文 & 関数 ― 45 分で「動くスクリプト」を書こう

Python

この記事のゴール

  • if / for / while条件分岐・ループ処理 を書ける
  • 関数を定義・呼び出し し、戻り値を操作できる
  • シンプルなスクリプト(例: FizzBuzz)が自力で組める

条件分岐 ― if / elif / else(5 分)

score = 72

if score >= 80:
    result = "Great!"
elif score >= 60:
    result = "Pass"
else:
    result = "Fail"

print(result)   # Pass

ポイント

  • Python は インデントが命(半角スペース 4 つ推奨)。
  • elif は何回でも書ける。

for ループ ― イテラブルを回す(7 分)

animals = ["cat", "dog", "koala"]

for i, animal in enumerate(animals, start=1):
    print(i, animal)
構文説明
range(n)0〜n-1 までの整数for i in range(5):
breakループを抜けるif x == 0: break
continue次の周回へif x < 0: continue

while ループ ― 条件が真なら回す(5 分)

count = 3
while count > 0:
    print(count)
    count -= 1
else:
    print("Liftoff!")

while ... else は「ループが break せず 正常終了したときだけ」実行。


関数定義 ― def(10 分)

def greet(name: str = "world") -> str:
    """指定した名前で挨拶を返す"""
    return f"Hello, {name}!"

print(greet())            # Hello, world!
print(greet("Python"))    # Hello, Python!

キーワード引数・デフォルト値

def power(base, exp=2):
    return base ** exp

print(power(3))        # 9
print(power(exp=3, base=2))  # 8

Docstring(三連引用符)の 1 行目は 概要を簡潔に


無名関数 ― lambda(3 分)

nums = [1, 2, 3, 4]
squares = list(map(lambda n: n**2, nums))   # [1, 4, 9, 16]

tip: 複雑な処理は 名前付き関数 に切り出した方が可読性◎。


スコープ ― global / nonlocal(3 分)

counter = 0

def increment():
    global counter
    counter += 1

原則: 変数は ローカル で完結させる。global は最後の手段。


練習チャレンジ(10 分)

FizzBuzz を書こう
1〜30 まで数をプリント。ただし、3 の倍数は "Fizz", 5 の倍数は "Buzz", 両方 の倍数は "FizzBuzz" と表示。

  • for ループを使ったバージョン
  • 関数 fizzbuzz(n: int) -> str を作り、map() で一気に出力

トラブルシューティング

症状 / 例外原因 / 対処
IndentationError: unexpected indentインデントのズレ → Tab & Space が混在していないか確認
TypeError: unsupported operand型ミスマッチ → 例: intstr を足そうとしている
関数内で値が更新されない外側変数を書き換え → global or 引数で受け渡し

次に覚える 3 キーワード

  1. try / except / finally ― 例外処理
  2. import ― モジュール利用
  3. *args / **kwargs ― 可変長引数

参考リンク


まとめ

  • 制御構文 + 関数 = “再利用できるロジック” を作る最小単位。
  • パターンを覚えたら 小さな自動化スクリプト を量産してみよう。
  • 次回(第 4 回)は 仮想環境 & パッケージ管理 で “依存性地獄” を回避!

コメント

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