ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
制御構文の全体像
| 構文 | 使う場面 | 詳細 |
|---|---|---|
if / elif / else | 条件で処理を分ける | 条件分岐 (if文) |
for | リストなど並んだ要素を順に処理する | 繰り返し処理 |
while | 条件が成り立つ間くり返す | 繰り返し処理(while文) |
match | 値の形で分岐する(Python 3.10 以降) | 本記事で紹介 |
break / continue | ループを抜ける / 次へ進む | 繰り返しの中断 (break) / 繰り返しのスキップ (continue) |
try / except | 例外が起きたときの流れ | 例外処理 |
switch や do-while、C 言語風の for (i = 0; i < n; i++) は存在しません。代わりに match、while True + break、for i in range(n) を使います。
共通の書き方
score = 75
if score >= 80: # 行末に : を付ける
print("合格") # ブロックはインデント 4 個
elif score >= 60:
print("再試験")
else:
print("不合格")
for name in ["田中", "鈴木"]:
print(name)
n = 3
while n > 0:
print(n)
n -= 1
条件を ( ) で囲む必要はありません。囲んでも動きますが、Python では付けないのが普通です。
ネストと pass
for row in [[1, 2], [3, 4]]:
for value in row:
if value % 2 == 0:
print(value, "は偶数")
# 中身が未定のときは pass を置く(空行だとエラー)
def todo():
pass
if False:
pass # あとで書く
ループの else 節
Python 独自の構文です。ループが break されずに最後まで回った場合だけ else が実行されます。「見つからなかったとき」の処理を素直に書けます。
users = ["田中", "鈴木"]
for u in users:
if u == "佐藤":
print("見つかった")
break
else:
print("見つからなかった") # break しなかったのでここが動く
n = 0
while n < 3:
n += 1
else:
print("最後まで回った") # 3
「else = 条件が偽のとき」ではない点に注意してください。break されなかったときと覚えます。
match 文(Python 3.10 以降)
def describe(command):
match command:
case "start":
return "開始します"
case "stop" | "halt": # 複数候補は |
return "停止します"
case ["move", x, y]: # リストの形で分解できる
return f"({x}, {y}) へ移動"
case {"type": "user", "name": name}: # 辞書の形でも
return f"ユーザー {name}"
case int() as n if n > 0: # 型と追加条件
return f"正の数 {n}"
case _: # どれにも当たらない場合
return "不明"
print(describe(["move", 1, 2])) # (1, 2) へ移動
match は単なる値の一致ではなく構造の分解ができるのが特徴です。値を比べるだけなら if/elif や辞書引きのほうが読みやすい場合もあります。
内包表記で置き換えられる場合
nums = [1, 2, 3, 4, 5]
# for でリストを作る書き方
result = []
for n in nums:
if n % 2 == 0:
result.append(n * 10)
# 内包表記なら 1 行
result = [n * 10 for n in nums if n % 2 == 0] # [20, 40]
# 辞書・集合も同じ形で作れる
squares = {n: n * n for n in nums}
evens = {n for n in nums if n % 2 == 0}
「リストを作るためだけのループ」は内包表記にすると意図が伝わります。ただし条件が 2 つ以上になったり副作用がある場合は、素直に for で書いたほうが読みやすいです。
流れを変える 5 つのキーワード
| キーワード | 何が起きるか | 置ける場所 |
|---|---|---|
break | いま入っているループを 1 段だけ抜ける | for / while の中 |
continue | 本体の残りを飛ばして次の周回へ | for / while の中 |
return | 関数そのものを抜ける(多重ループも一気に抜ける) | 関数の中 |
raise | 例外を投げて呼び出し元へ飛ばす | どこでも |
pass | 何もしない。ブロックを空にできない場所の穴埋め | どこでも |
def find_first_negative(matrix):
for row in matrix:
for v in row:
if v < 0:
return v # 二重ループを一度に抜けられる
return None
print(find_first_negative([[1, 2], [3, -4]])) # -4
break は内側の 1 段しか抜けません。多重ループから脱出したいときは、関数に切り出して return するのが最も読みやすくなります。
条件の中で代入する(セイウチ演算子)
# 計算結果を条件にも本体にも使いたい
data = [1, 2, 3, 4, 5]
if (n := len(data)) > 3:
print(f"{n} 件あります") # 5 件あります
# 読み込みループが 1 行にまとまる
with open("data.txt", encoding="utf-8") as f:
while (line := f.readline()):
print(line.rstrip())
# 内包表記で同じ計算を 2 回しない
values = [y for x in data if (y := x * 10) > 20] # [30, 40, 50]
Python 3.8 で入った := は値を返しながら代入します。普通の = は式ではないため if n = len(data): とは書けません。多用すると読みにくくなるので、同じ計算を 2 回書かずに済む場面だけに使います。
後始末を保証する with 文
# ファイルは閉じ忘れがちなので with を使う
with open("data.txt", encoding="utf-8") as f:
for line in f:
print(line.rstrip())
# ここに来た時点で必ず閉じられている(途中で例外が出ても)
# 複数まとめて開く
with open("in.txt") as src, open("out.txt", "w") as dst:
dst.write(src.read())
with は「ブロックを抜けるときに必ず何かをする」構文です。ファイル・DB 接続・ロックなど、開いたら必ず閉じるものに使います。
よく出る構文エラー
| エラー | 原因 |
|---|---|
SyntaxError: expected ':' | if / for / def の行末に : が無い |
IndentationError: expected an indented block | : の次の行をインデントしていない |
SyntaxError: invalid syntax | かっこの閉じ忘れ。指摘された行の 1 つ前を見る |
SyntaxError: 'break' outside loop | ループの外に break を書いている |
TabError | タブとスペースの混在 |
関連
- 文法 — 親カテゴリ
- 条件分岐 (if文)
- 繰り返し処理 — for 文
- 繰り返し処理(while文)
- 繰り返しの中断 (break)
- 繰り返しのスキップ (continue)
- 論理演算子 — 条件の組み立て
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Wi-Fi とは|規格と世代(Wi-Fi 4〜7)・周波数帯・CSMA/CA・WPA3 NEW 2026-09-07 07:45:13
- set コマンドでシェルオプションと位置パラメータを操作 | bash 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- UE5 Get Overlapping Actorsで特定クラスだけ処理|Class Filter・Cast To 2026-09-07 07:45:13
- Linuxで特定拡張子のファイルを再帰削除|find -deleteの安全手順 2026-09-07 07:45:13
- Django CBVでテンプレートに値を渡す|get_context_data・extra_context 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Linux catコマンドの使い方|行番号表示・複数ファイル連結 2026-09-07 07:45:13
- unable to execute 'gcc': No such file or directory 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?