Quick actions

cmd+k|ctrl+k

Navigation

Languages

35 Улучшенный to-do список

Snippet info

Language

Python

Visibility

public

Author

python100

Created

2025-08-03T19:33:15.506235Z

Updated

2025-08-03T19:33:15.506235Z

import os
import time

todos = ["Запишите видео для дня 34", "Написать код для проекта"]

def show_header():
    os.system("cls")
    border = "════════════════════════════════════════"
    print("\033[35m", border, "\033[0m", sep="")
    print("{:^40}".format("\033[1;36m✨ Менеджер списков дел ✨\033[0m"))
    print("\033[35m", border, "\033[0m", sep="", end="\n\n")

def pretty_print():
    show_header()
    if not todos:
        print("\033[33mВаш список дел пуст!\033[0m")
    else:
        print("\033[1;34mВаш список дел:\033[0m")
        for index in range(len(todos)):
            print(f"{index + 1}. {todos[index]}")
    time.sleep(1)

def add_todo():
    show_header()
    new_item = input("\033[32mВведите новое дело: \033[0m")
    if new_item in todos:
        print("\033[31mЭто дело уже есть в списке!\033[0m")
    else:
        todos.append(new_item)
        print(f"\033[32mДобавлено: {new_item}\033[0m")
    time.sleep(1)

def edit_todo():
    pretty_print()
    if not todos:
        return

    while True:
        item_to_edit = input("\033[33mВведите дело для редактирования: \033[0m")
        if item_to_edit not in todos:
            print("\033[31mТакого дела нет в списке!\033[0m")
            continue
        else:
            break

    while True:
        new_text = input("\033[33mВведите новый текст: \033[0m")
        if new_text in todos:
            print("\033[31mТакое дело уже есть в списке!\033[0m")
            continue
        else:
            break

    for i in range(len(todos)):
        if todos[i] == item_to_edit:
            todos[i] = new_text

    print(f"\033[32mИзменено: '{item_to_edit}' → '{new_text}'\033[0m")
    time.sleep(1)

def delete_todo():
    pretty_print()
    if not todos:
        return
    
    while True:
        item_to_delete = input("\033[33mВведите дело для удаления: \033[0m")
        if item_to_delete not in todos:
            print("\033[31mТакого дела нет в списке!\033[0m")
            continue
        else:
            break

    for i in range(len(todos)):
        if todos[i] == item_to_delete:
            confirm = input(f"\033[31mВы уверены, что хотите удалить '{item_to_delete}'? (да/нет): \033[0m")
            if confirm == "да":
                todos.remove(item_to_delete)
                print(f"\033[32mУдалено: {item_to_delete}\033[0m")
    time.sleep(1)

def clear_all():
    show_header()
    if not todos:
        print("\033[33mСписок уже пуст!\033[0m")
    else:
        confirm = input("\033[31mВы уверены, что хотите очистить весь список? (да/нет): \033[0m")
        if confirm == "да":
            todos.clear()
            print("\033[32mСписок дел очищен!\033[0m")
    time.sleep(1)

while True:
    show_header()
    print("1. 📋 Просмотреть список дел")
    print("2. ➕ Добавить дело")
    print("3. ✏️ Редактировать дело")
    print("4. ❌ Удалить дело")
    print("5. 🗑️ Очистить весь список")
    print("6. 🚪 Выйти\n")
    
    choice = input("\033[36mВыберите действие (1-6): \033[0m")
    
    if choice == "1":
        pretty_print()
        input("\nНажмите Enter чтобы продолжить...")
    elif choice == "2":
        add_todo()
        input("\nНажмите Enter чтобы продолжить...")
    elif choice == "3":
        edit_todo()
        input("\nНажмите Enter чтобы продолжить...")
    elif choice == "4":
        delete_todo()
        input("\nНажмите Enter чтобы продолжить...")
    elif choice == "5":
        clear_all()
        input("\nНажмите Enter чтобы продолжить...")
    elif choice == "6":
        show_header()
        print("\033[1;35mСпасибо за использование менеджера дел! До свидания! 👋\033[0m")
        break
    else:
        print("\033[31mНеверный выбор! Попробуйте снова.\033[0m")
        time.sleep(1)
INFO