123 RaysMorgan1 # ================================ # Простое консольное приложение # Менеджер задач (To-Do List) # ================================ import os import json from datetime import datetime # ------------------------------- # Константы # ------------------------------- DATA_FILE = "tasks.json" # ------------------------------- # Работа с файлами # ------------------------------- def load_tasks(): """Загружает задачи из файла""" if not os.path.exists(DATA_FILE): return [] with open(DATA_FILE, "r", encoding="utf-8") as file: try: return json.load(file) except json.JSONDecodeError: return [] def save_tasks(tasks): """Сохраняет задачи в файл""" with open(DATA_FILE, "w", encoding="utf-8") as file: json.dump(tasks, file, ensure_ascii=False, indent=4) # ------------------------------- # Работа с задачами # ------------------------------- def add_task(tasks): """Добавляет новую задачу""" title = input("Введите название задачи: ") description = input("Введите описание: ") task = { "id": len(tasks) + 1, "title": title, "description": description, "created_at": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), "completed": False } tasks.append(task) save_tasks(tasks) print("Задача добавлена!") def show_tasks(tasks): """Показывает список задач""" if not tasks: print("Список задач пуст.") return for task in tasks: status = "✓" if task["completed"] else " " print("-" * 40) print(f"ID: {task['id']}") print(f"[{status}] {task['title']}") print(f"Описание: {task['description']}") print(f"Создано: {task['created_at']}") print("-" * 40) def complete_task(tasks): """Отмечает задачу выполненной""" try: task_id = int(input("Введите ID задачи: ")) except ValueError: print("Некорректный ввод.") return for task in tasks: if task["id"] == task_id: task["completed"] = True save_tasks(tasks) print("Задача отмечена как выполненная.") return print("Задача не найдена.") def delete_task(tasks): """Удаляет задачу""" try: task_id = int(input("Введите ID задачи: ")) except ValueError: print("Некорректный ввод.") return for task in tasks: if task["id"] == task_id: tasks.remove(task) save_tasks(tasks) print("Задача удалена.") return print("Задача не найдена.") # ------------------------------- # Меню # ------------------------------- def show_menu(): print("\nМенеджер задач") print("1. Показать задачи") print("2. Добавить задачу") print("3. Отметить выполненной") print("4. Удалить задачу") print("5. Выход") # ------------------------------- # Главный цикл программы # ------------------------------- def main(): tasks = load_tasks() while True: show_menu() choice = input("Выберите действие: ") if choice == "1": show_tasks(tasks) elif choice == "2": add_task(tasks) elif choice == "3": complete_task(tasks) elif choice == "4": delete_task(tasks) elif choice == "5": print("Выход из программы.") break else: print("Неизвестная команда.") # ------------------------------- # Точка входа # ------------------------------- if __name__ == "__main__": main() Python # ================================ # Простое консольное приложение # Менеджер задач (To-Do List) # ================================ import os import json from datetime import datetime # ------------------------------- # Константы # ------------------------------- DATA_FILE = "tasks.json" # ------------------------------- # Работа с файлами # ------------------------------- def load_tasks(): """Загружает задачи из файла""" if not os.path.exists(DATA_FILE): return [] with open(DATA_FILE, "r", encoding="utf-8") as file: try: return json.load(file) except json.JSONDecodeError: return [] def save_tasks(tasks): """Сохраняет задачи в файл""" with open(DATA_FILE, "w", encoding="utf-8") as file: json.dump(tasks, file, ensure_ascii=False, indent=4) # ------------------------------- # Работа с задачами # ------------------------------- def add_task(tasks): """Добавляет новую задачу""" title = input("Введите название задачи: ") description = input("Введите описание: ") task = { "id": len(tasks) + 1, "title": title, "description": description, "created_at": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), "completed": False } tasks.append(task) save_tasks(tasks) print("Задача добавлена!") def show_tasks(tasks): """Показывает список задач""" if not tasks: print("Список задач пуст.") return for task in tasks: status = "✓" if task["completed"] else " " print("-" * 40) print(f"ID: {task['id']}") print(f"[{status}] {task['title']}") print(f"Описание: {task['description']}") print(f"Создано: {task['created_at']}") print("-" * 40) def complete_task(tasks): """Отмечает задачу выполненной""" try: task_id = int(input("Введите ID задачи: ")) except ValueError: print("Некорректный ввод.") return for task in tasks: if task["id"] == task_id: task["completed"] = True save_tasks(tasks) print("Задача отмечена как выполненная.") return print("Задача не найдена.") def delete_task(tasks): """Удаляет задачу""" try: task_id = int(input("Введите ID задачи: ")) except ValueError: print("Некорректный ввод.") return for task in tasks: if task["id"] == task_id: tasks.remove(task) save_tasks(tasks) print("Задача удалена.") return print("Задача не найдена.") # ------------------------------- # Меню # ------------------------------- def show_menu(): print("\nМенеджер задач") print("1. Показать задачи") print("2. Добавить задачу") print("3. Отметить выполненной") print("4. Удалить задачу") print("5. Выход") # ------------------------------- # Главный цикл программы # ------------------------------- def main(): tasks = load_tasks() while True: show_menu() choice = input("Выберите действие: ") if choice == "1": show_tasks(tasks) elif choice == "2": add_task(tasks) elif choice == "3": complete_task(tasks) elif choice == "4": delete_task(tasks) elif choice == "5": print("Выход из программы.") break else: print("Неизвестная команда.") # ------------------------------- # Точка входа # ------------------------------- if __name__ == "__main__": main()