基礎LESSON 10
この教材で学ぶこと 基本文法、collection、function、例外、moduleを順に学びます。Python入門
対象読者: 初めてPythonを学ぶ人。プログラミング基礎を先に読むと理解しやすくなります。
この教材でできるようになること
- Pythonの基本的な値、条件分岐、繰り返し、関数を書ける
- listとdictを使ってデータを整理できる
- moduleとvirtual environmentの目的を説明できる
- 例外を握りつぶさず、呼び出し側へ伝えられる
1. 最初のprogram
name = input("名前: ").strip()
if not name:
raise ValueError("名前は必須です")
print(f"こんにちは、{name}さん")
Pythonはindentationでblockを表します。tabとspaceを無秩序に混ぜず、通常はspace 4文字を使います。
2. listとdict
lessons = [
{"title": "Python入門", "minutes": 45, "done": True},
{"title": "テスト", "minutes": 60, "done": False},
]
remaining = [lesson for lesson in lessons if not lesson["done"]]
total_minutes = sum(lesson["minutes"] for lesson in lessons)
list comprehensionは短く書けますが、条件や変換が複雑なら通常のforへ戻して読みやすさを優先します。
3. 関数と型hint
def completion_rate(done: int, total: int) -> float:
if total <= 0:
raise ValueError("total must be positive")
if not 0 <= done <= total:
raise ValueError("done must be between 0 and total")
return done / total
型hintは実行時に自動検証する仕組みではありませんが、意図の共有や静的解析に役立ちます。外部入力は別途検証します。
4. 例外を扱う
def parse_minutes(raw: str) -> int:
try:
minutes = int(raw)
except ValueError as error:
raise ValueError("minutes must be an integer") from error
if minutes <= 0:
raise ValueError("minutes must be positive")
return minutes
except Exception: passのようにすべてを無視すると、原因が見えなくなります。回復できる例外だけを、適切な場所で処理します。
5. moduleへ分ける
study_tracker/
├── main.py
├── progress.py
└── tests/
# progress.py
def remaining_minutes(planned: int, spent: int) -> int:
return max(0, planned - spent)
# main.py
from progress import remaining_minutes
print(remaining_minutes(90, 35))
6. virtual environment
projectごとにdependencyを分離します。
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
Windows PowerShellのactivate commandは環境により異なります。.venvは通常Gitへcommitしません。
7. main guard
def main() -> int:
print("study tracker")
return 0
if __name__ == "__main__":
raise SystemExit(main())
関数としてimportする場合と、scriptとして実行する場合を分けられます。
演習: 学習時間集計
[{"category": "Python", "minutes": 30}, ...]を受け取り、category別の合計をdictで返す関数を作ってください。
要件:
- categoryは空文字不可
- minutesは1以上の整数
- 不正なentryでは
ValueError - 入力listを変更しない
理解チェック
- listとdictを用途から選べる
- 一つの役割を持つ関数を書ける
- 例外を原因付きで伝えられる
- projectごとにvirtual environmentを作れる
公式資料
次に読む
PythonのテストとCLIで、小さなtoolとして完成させます。