1日目のゴールと全体像
TODOリストアプリ 1日目のテーマは 「Pythonの基本文法だけで“メモ程度のTODOリスト”を作ること」 です。
この日はまだ複雑な機能は入れず、まずは
- 変数で「やること」を覚える
- 繰り返しで「複数のTODO」を扱う
- 条件分岐で「終了するかどうか」を決める
- 関数で「処理のまとまり」を作る
- ファイル操作の“入口”として、簡単な保存を体験する
という流れで、「動くTODOリストの最初の形」 を作っていきます。
TODOリストの基本アイデア
TODOリストの仕組みは、とてもシンプルです。
- ユーザーが「やること」を入力する
- 入力された「やること」をどこかに保存しておく
- 最後に一覧として表示する
- できればファイルにも保存しておく
この「どこかに保存しておく」が、 Pythonでは 変数やリスト の出番になります。
1つのTODOを変数に入れてみる
まずは「やること」を1つだけ扱ってみます。
todo = input("今日やることを1つ入力してください:")
print("あなたのTODO:", todo)
Python深掘りポイント
input()はユーザーから文字列を受け取る- 受け取った値を
todoという変数に入れておくことで、後から使える print()で確認することで、「変数に入った」感覚がつかめる
ここまでは「1つだけのTODOメモ」です。 1日目の本番は、ここから 複数のTODOを扱う ところです。
複数のTODOをリストで管理する
TODOリストは、名前の通り「リスト」がぴったりです。
todos = [] # TODOを入れていくための空のリスト
Pythonここに、ユーザーが入力した「やること」を追加していきます。
todo = input("今日やることを1つ入力してください:")
todos.append(todo) # リストに追加
Python深掘りポイント
- リストは「複数の値をまとめて扱う箱」
append()は「リストの末尾に追加する」メソッド- TODOリストアプリでは、リストが主役になる
繰り返しで「何件でも」TODOを追加できるようにする
1件だけではなく、ユーザーが「もう1件」「もう1件」と 続けて入力できるようにしたいですよね。
そこで 繰り返し と 条件分岐 を組み合わせます。
シンプルなループの形
todos = []
while True:
todo = input("TODOを入力してください(終了したいときは空のままEnter):")
if todo == "": # 何も入力されなかったら終了
break
todos.append(todo)
print("=== 今日のTODO一覧 ===")
for t in todos:
print("-", t)
Python深掘りポイント
while True:は「ずっと繰り返す」if todo == "": breakで「空入力なら終了」という条件分岐for t in todos:で「リストの中身を1つずつ取り出して表示」
この時点で、すでに 「簡単なTODOリストアプリ」 が完成しています。
関数にまとめて「部品化」する
1日目から「関数」を意識しておくと、 後の拡張がとても楽になります。
設計
- 関数名:
input_todos - 役割:ユーザーからTODOを受け取り、リストとして返す
def input_todos():
"""ユーザーからTODOを入力してもらい、リストで返す関数"""
todos = []
while True:
todo = input("TODOを入力してください(終了したいときは空のままEnter):")
if todo == "": # 空なら終了
break
todos.append(todo)
return todos
Python深掘りポイント
- 関数は「処理のまとまり」
return todosで、関数の外に結果を渡す- 後で「表示」「保存」などを別の関数に分けやすくなる
TODO一覧を表示する関数
表示も関数にしておくと、 「表示方法を変えたい」ときに楽です。
def show_todos(todos):
"""TODOリストをきれいに表示する関数"""
print("=== 今日のTODO一覧 ===")
if not todos: # リストが空ならメッセージだけ表示
print("TODOは登録されていません。")
return
for t in todos:
print("-", t)
Python深掘りポイント
if not todos:は「リストが空かどうか」をチェックする条件分岐- 繰り返しで1件ずつ表示することで、見やすい一覧になる
ファイル操作の“入口”:TODOを簡単に保存してみる
1日目では、ファイル操作は「軽く触る」程度にします。 「今日のTODOをテキストファイルに書き出す」 だけでも、 かなり実用的になります。
def save_todos_to_file(todos, file_path="todos.txt"):
"""TODOリストをファイルに保存する関数"""
with open(file_path, "w", encoding="utf-8") as f:
for t in todos:
f.write(t + "\n") # 1行に1つずつ書き込む
print(f"TODOを {file_path} に保存しました。")
Python深掘りポイント
"w"モードは「上書き保存」for t in todos:でリストの中身を1件ずつ書き込む\nを付けることで、1行1TODOになる
1日目では「読み込み」はまだ扱わず、 「書き出せるようになった」 ことを大事にします。
1日目の完成コード:シンプルTODOリストアプリ
ここまでの要素を全部つなげると、 1日目の完成版はこんな形になります。
import os # 今日はほぼ使わないが、後日の拡張で使える
def input_todos():
"""ユーザーからTODOを入力してもらい、リストで返す関数"""
todos = []
while True:
todo = input("TODOを入力してください(終了したいときは空のままEnter):")
# 条件分岐:空なら入力終了
if todo == "":
break
todos.append(todo) # リストに追加
return todos
def show_todos(todos):
"""TODOリストをきれいに表示する関数"""
print("=== 今日のTODO一覧 ===")
# 条件分岐:何も登録されていない場合
if not todos:
print("TODOは登録されていません。")
return
# 繰り返し:1件ずつ表示
for t in todos:
print("-", t)
def save_todos_to_file(todos, file_path="todos.txt"):
"""TODOリストをファイルに保存する関数"""
with open(file_path, "w", encoding="utf-8") as f:
for t in todos:
f.write(t + "\n") # 1行に1つずつ書き込む
print(f"TODOを {file_path} に保存しました。")
def main():
"""アプリ全体の流れをまとめた関数"""
print("=== TODOリストアプリ 1日目 ===")
# TODOを入力
todos = input_todos()
# TODOを表示
show_todos(todos)
# ファイルに保存するかどうかを聞く(条件分岐)
answer = input("TODOをファイルに保存しますか?(y/n):")
if answer == "y":
save_todos_to_file(todos)
else:
print("保存せずに終了します。")
if __name__ == "__main__":
main()
Pythonコードの重要ポイントを深掘り
1. 変数は「値を覚えておく箱」
todos:TODOの一覧todo:1件分のTODOanswer:保存するかどうかのユーザーの選択
これらはすべて「後で使うために値を覚えておく」ための変数です。
2. 条件分岐で「流れ」をコントロールする
if todo == "": break→ 入力を終えるタイミングを決めるif not todos:→ TODOが1件もないときの表示を変えるif answer == "y":→ 保存するかどうかをユーザーに委ねる
条件分岐は、 「ユーザーの入力や状態に応じて、アプリの挙動を変える」 ための基本です。
3. 繰り返しで「複数のもの」を扱う
while True:で「何件でも入力できる」for t in todos:で「複数のTODOを1件ずつ表示・保存する」
TODOリストのような「複数データ」を扱うアプリでは、 繰り返しが必須になります。
4. 関数で「役割ごとに分ける」
input_todos:入力担当show_todos:表示担当save_todos_to_file:保存担当main:全体の流れ担当
この分割ができると、 「どこを直せば何が変わるか」 がとてもわかりやすくなります。
5. ファイル操作は「外部世界との橋」
1日目では「書く」だけですが、 それでもアプリは一気に実用的になります。
- 画面に表示するだけ → 一時的
- ファイルに保存する → 後から見返せる
この違いは大きいです。
1日目で本当に掴んでほしいこと
● 「動くものを作る」感覚
自分が入力したTODOが
- 画面に一覧表示されて
- ファイルにも保存される
この体験は、 「Pythonで何かを作る」 感覚をつかむうえで、とても大事です。
● 文法は「アプリの中で使ってこそ身につく」
- 変数
- 条件分岐
- 繰り返し
- 関数
- ファイル操作
これらは、単体で覚えるよりも 「TODOリストアプリの中で使う」 ほうが、ずっと記憶に残ります。
次のステップ
2日目以降では、このTODOリストをさらに育てていきます。
- 2日目:番号付きで表示して「削除」や「完了」を扱う(条件分岐・繰り返しの強化)
- 3日目:ファイルから読み込んで「前回のTODO」を復元する(ファイル操作の強化)
- 4日目:関数を整理して「メニュー付きアプリ」にする
- 5〜7日目:設定ファイル・ログ・完了フラグなどを追加して「本格的なTODO管理ツール」に近づける
1日目のこのコードを、 ぜひ自分の手で打ち込んで、少しずつ改造してみてください。 そこから先が、いちばん面白いところです。


