ここでは、ユーザー入力 → 判定 → 結果をCSVに保存 する
「成績判定アプリ(ループ付き・CSV保存)」の完全版サンプルを示します。
成績判定アプリ(CSV保存付き)
機能
- ユーザーが名前と点数を入力
- 点数に応じて成績を判定
- 入力ミス時は再入力
- 結果を
scores.csv に保存
- 「終了」と入力すると終了
コード例
import csv
# CSVファイル名
FILENAME = "scores.csv"
# CSVのヘッダーを書き込む(ファイルが空のときだけ)
with open(FILENAME, mode="a", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
if f.tell() == 0: # ファイルが空の場合のみヘッダー追加
writer.writerow(["名前", "点数", "成績"])
print("=== 成績判定アプリ ===")
print("名前と点数を入力してください('終了'で終了)")
while True:
name = input("名前: ")
if name == "終了":
print("入力を終了します。")
break
# 点数入力とバリデーション
while True:
score_str = input("点数(0〜100): ")
if score_str.isdigit():
score = int(score_str)
if 0 <= score <= 100:
break
print("❌ 無効な入力です。0〜100の数値を入力してください。")
# 成績判定
if score >= 80:
grade = "A"
elif score >= 70:
grade = "B"
elif score >= 60:
grade = "C"
else:
grade = "D"
# 結果を表示
print(f"{name}さんの成績は「{grade}」です。\n")
# CSVに保存
with open(FILENAME, mode="a", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow([name, score, grade])
print(f"✅ 結果を {FILENAME} に保存しました。")
Python
解説(ステップごと)
| ステップ | 内容 | 説明 |
|---|
| 1 | import csv | Pythonの標準CSVライブラリを使う |
| 2 | ファイル作成 | with open(..., "a") で追記モードにし、初回だけヘッダー行を作成 |
| 3 | 名前入力 | '終了' と入力したら break でループを抜ける |
| 4 | 点数入力 | isdigit()で数字チェック、0〜100の範囲を確認 |
| 5 | 成績判定 | if〜elif〜elseで判定(A〜D) |
| 6 | CSV書き込み | csv.writer()で1行ずつ追記 |
| 7 | 終了表示 | 全ての入力が終わったらファイル保存完了メッセージ |
出力例(scores.csv)
応用アイデア
- 入力時間も一緒に保存(
datetime を追加)
- CSVを読み込んで平均点を表示する分析機能を追加
- GUI版(PySimpleGUI)に拡張して、ボタンで保存