
import json # ファイルに保存するためのファイル名 data_file = "todo_list.json" # 初期化またはデータ読み込み def load_todo_list(): try: with open(data_file, "r") as file: return json.load(file) except FileNotFoundError: return [] def save_todo_list(todo_list): with open(data_file, "w") as file: json.dump(todo_list, file, indent=4) def display_todo_list(todo_list): if not todo_list: print("\nTodoリストは空です!") return print("\n=== Todoリスト ===") for i, task in enumerate(todo_list, start=1): status = "[✓]" if task["completed"] else "[ ]" print(f"{i}. {status} {task['task']}") def add_task(todo_list, task): todo_list.append({"task": task, "completed": False}) print(f"\"{task}\" を追加しました!") def mark_task_completed(todo_list, task_number): if not todo_list: print("\nTodoリストは空です!") return if 1 <= task_number <= len(todo_list): todo_list[task_number - 1]["completed"] = True print(f"\"{todo_list[task_number - 1]['task']}\" を完了にしました!") else: print("無効な番号です!") def main(): todo_list = load_todo_list() # プリセットの選択肢を使用して非インタラクティブ環境で動作 commands = [ {"action": "display"}, {"action": "add", "task": "新しいタスク1"}, {"action": "add", "task": "新しいタスク2"}, {"action": "complete", "task_number": 1}, {"action": "display"}, {"action": "exit"} ] for command in commands: if command["action"] == "display": display_todo_list(todo_list) elif command["action"] == "add": add_task(todo_list, command["task"]) save_todo_list(todo_list) elif command["action"] == "complete": mark_task_completed(todo_list, command["task_number"]) save_todo_list(todo_list) elif command["action"] == "exit": save_todo_list(todo_list) print("終了します!") break if __name__ == "__main__": main()