この記事のゴール
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 | 型ミスマッチ → 例: int と str を足そうとしている |
| 関数内で値が更新されない | 外側変数を書き換え → global or 引数で受け渡し |
次に覚える 3 キーワード
try / except / finally― 例外処理import― モジュール利用*args/**kwargs― 可変長引数
参考リンク
- 制御フロー公式ガイド: https://docs.python.org/ja/3/tutorial/controlflow.html
- 関数定義: https://docs.python.org/ja/3/tutorial/controlflow.html#defining-functions
まとめ
- 制御構文 + 関数 = “再利用できるロジック” を作る最小単位。
- パターンを覚えたら 小さな自動化スクリプト を量産してみよう。
- 次回(第 4 回)は 仮想環境 & パッケージ管理 で “依存性地獄” を回避!


コメント