🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

【Copie e Cole para Rodar】Vamos Criar um Aplicativo Simples de Lista de Tarefas com Python! (Baseado em Texto)

Para executar Python no prompt de comando ou PowerShell no seu PC, é necessário baixar e instalar o Python.
Se ainda não o fez, consulte o artigo Instalação do Python e configuração do ambiente de desenvolvimento para instalar o Python.

Olá! Há apenas alguns meses, eu não sabia nada de programação e agora estou compartilhando o que aprendi criando sites com a ajuda de uma IA.

Desta vez, vamos criar um "Aplicativo de Lista de Tarefas" (To-Do List) em Python, que eu super recomendo como um primeiro passo no aprendizado de programação. O objetivo deste artigo é apenas um: fazer você sentir a emoção de "O programa que eu mesmo fiz está funcionando!".

Vamos deixar a teoria difícil para depois! Primeiro, vamos mexer em um código que você pode copiar e colar para sentir como é, "Ah, então é assim que funciona!". Vou explicar os termos técnicos de uma forma super simples, com base nos meus próprios tropeços, então pode ficar tranquilo.


Primeiro, vamos rodar o produto final!

Ver para crer! Primeiro, vamos rodar a versão final do aplicativo de lista de tarefas. Copie todo o código abaixo, crie um arquivo chamado todo.py, cole o conteúdo e salve.


# -*- coding: utf-8 -*-

TASKS_FILE = "tasks.txt"

def load_tasks():
    """Função para carregar tarefas do arquivo"""
    try:
        with open(TASKS_FILE, "r", encoding="utf-8") as f:
            # Usa strip() para remover o caractere de nova linha no final de cada linha
            tasks = [line.strip() for line in f.readlines()]
    except FileNotFoundError:
        # Se o arquivo não existir, retorna uma lista vazia
        tasks = []
    return tasks

def save_tasks(tasks):
    """Função para salvar tarefas no arquivo"""
    with open(TASKS_FILE, "w", encoding="utf-8") as f:
        # Adiciona uma quebra de linha no final de cada tarefa ao escrever
        for task in tasks:
            f.write(task + "\n")

def list_tasks(tasks):
    """Função para exibir uma lista das tarefas"""
    if not tasks:
        print("✅ Nenhuma tarefa ainda.")
        return
    
    print("--- Lista de Tarefas ---")
    # Usa enumerate para obter o índice (número) e a tarefa ao mesmo tempo
    for i, task in enumerate(tasks):
        print(f"{i + 1}: {task}")
    print("----------------------")

def add_task(tasks):
    """Função para adicionar uma tarefa"""
    task = input("Digite a tarefa a ser adicionada: ")
    if task:
        tasks.append(task)
        save_tasks(tasks)
        print(f"✨ Tarefa '{task}' adicionada.")
    else:
        print("⚠️ Nenhuma tarefa foi digitada.")

def delete_task(tasks):
    """Função para deletar uma tarefa"""
    list_tasks(tasks)
    if not tasks:
        return
        
    try:
        # Pede para o usuário escolher uma tarefa pelo número
        num_str = input("Digite o número da tarefa a ser deletada: ")
        num = int(num_str)
        
        # O usuário conta a partir de 1, mas o índice da lista começa em 0, então ajustamos
        if 1 <= num <= len(tasks):
            removed_task = tasks.pop(num - 1)
            save_tasks(tasks)
            print(f"🗑️ Tarefa '{removed_task}' deletada.")
        else:
            print("⚠️ Não existe tarefa com esse número.")
            
    except ValueError:
        # Tratamento de erro para entrada não numérica
        print("⚠️ Por favor, digite um número válido.")

def main():
    """Função para rodar o processo principal"""
    tasks = load_tasks()
    
    while True:
        print("\nO que você gostaria de fazer?")
        command = input("1:Listar, 2:Adicionar, 3:Deletar, 9:Sair > ")
        
        if command == "1":
            list_tasks(tasks)
        elif command == "2":
            add_task(tasks)
        elif command == "3":
            delete_task(tasks)
        elif command == "9":
            print("👋 Saindo do aplicativo. Bom trabalho!")
            break
        else:
            print("⚠️ Por favor, digite 1, 2, 3 ou 9.")

if __name__ == "__main__":
    main()
        

Depois de salvar, abra seu terminal (ou Prompt de Comando/PowerShell no Windows), navegue até o diretório onde você salvou o arquivo e rode o seguinte comando:


python todo.py
        

E aí, como foi? Ele perguntou "O que você gostaria de fazer?"? Tente digitar "2" para adicionar uma tarefa, "1" para ver a lista e "3" para deletar uma tarefa. Você pode sair do aplicativo digitando "9". Incrível, já é um aplicativo de verdade!

A partir de agora, vamos desvendar juntos o que esse feitiço mágico (o código) está realmente fazendo.


Passo 1: Uma Versão Super Simples Apenas com "Adicionar" e "Listar"

Tentar entender tudo de uma vez pode ser complicado. Vamos começar com uma versão muito mais simples do código, focando apenas no coração do aplicativo: as funções de adicionar e listar tarefas.


# Prepara uma lista vazia (como um array) para armazenar as tarefas
tasks = []

# Repete o processo infinitamente
while True:
    print("\nO que você gostaria de fazer?")
    command = input("1:Listar, 2:Adicionar, 9:Sair > ")

    if command == "1":
        print("--- Lista de Tarefas ---")
        for task in tasks:
            print(task)
        print("----------------------")
    
    elif command == "2":
        task = input("Digite a tarefa a ser adicionada: ")
        tasks.append(task)
        print(f"✨ Tarefa '{task}' adicionada.")

    elif command == "9":
        print("👋 Saindo do aplicativo.")
        break # Sai do loop

    else:
        print("⚠️ Por favor, digite 1, 2 ou 9.")
        

Este pequeno trecho de código está repleto de fundamentos da programação.


Passo 2: Adicionando a Função "Deletar" e Tratamento de Erros

Em seguida, vamos tornar possível deletar as tarefas adicionadas. Para não ser inconveniente, permitiremos que o usuário escolha qual tarefa deletar por um número. Aqui vamos subir um pouco de nível!


# ... (Substitua a parte `if command == "1":` do código do Passo 1 pelo seguinte) ...

    if command == "1":
        print("--- Lista de Tarefas ---")
        # Usar enumerate permite obter o número da lista e o conteúdo ao mesmo tempo
        for i, task in enumerate(tasks):
            # i começa em 0, então somamos 1 ao exibir
            print(f"{i + 1}: {task}") 
        print("----------------------")

# ... (Adicione o seguinte após `elif command == "2":` no código do Passo 1) ...
    
    elif command == "3": # Adiciona a funcionalidade de deletar
        # Primeiro, exibe a lista atual para facilitar a escolha do usuário
        for i, task in enumerate(tasks):
            print(f"{i + 1}: {task}")

        try:
            num_str = input("Digite o número da tarefa a ser deletada: ")
            num = int(num_str) # Converte o texto de entrada para número

            # pop() remove o elemento da lista na posição (índice) especificada
            removed_task = tasks.pop(num - 1) 
            print(f"🗑️ Tarefa '{removed_task}' deletada.")
        
        except ValueError:
            print("⚠️ Por favor, digite um número válido.")
        except IndexError:
            print("⚠️ Não existe tarefa com esse número.")
        

Surgiram alguns pontos novos.

Uma regra de ouro é que "os usuários não agem como o desenvolvedor espera". Ao incluir esse tipo de tratamento de erros, você evita que seu aplicativo trave inesperadamente e cria um programa mais amigável e robusto.


Passo 3: Salvando os Dados em um Arquivo para que Não Desapareçam

Nosso aplicativo atual tem uma grande fraqueza. Uma vez que você fecha o programa, todas as tarefas que adicionou desaparecem. Assim não serve como uma lista de tarefas, certo? Então, vamos adicionar uma função para salvar as tarefas em um arquivo e carregá-las na próxima vez que o programa iniciar.


# Decida um nome para o arquivo
TASKS_FILE = "tasks.txt"

# --- Definição das Funções ---
def load_tasks():
    try:
        # "r" é o modo de leitura (read)
        with open(TASKS_FILE, "r", encoding="utf-8") as f:
            # readlines() lê todas as linhas para uma lista, e strip() remove as quebras de linha
            tasks = [line.strip() for line in f.readlines()]
    except FileNotFoundError:
        # Isso dará erro na primeira vez ou se o arquivo não existir, então retornamos uma lista vazia
        tasks = []
    return tasks

def save_tasks(tasks):
    # "w" é o modo de escrita (write). Se o arquivo não existir, será criado.
    with open(TASKS_FILE, "w", encoding="utf-8") as f:
        for task in tasks:
            # Ao escrever no arquivo, adicione um caractere de nova linha (\n) ao final de cada tarefa
            f.write(task + "\n")

# --- Processo Principal ---
# Ao iniciar o app, primeiro carregue as tarefas do arquivo
tasks = load_tasks()

# Toda vez que uma tarefa for adicionada ou deletada, modifique para chamar save_tasks(tasks)
# (Consulte o código completo no início)
        

O ponto principal aqui é a "leitura e escrita de arquivos".

E, finalmente, como mostrado no código completo no início, agrupar blocos de processamento usando def para criar "funções" (isso se chama refatorar) torna o código muito mais limpo e fácil de entender. Quando seu código começar a ficar longo, criar o hábito de organizá-lo em caixas (funções) para cada funcionalidade facilitará muito sua vida no futuro.


Conclusão: Se Funciona, Você Venceu! E para o Próximo Passo

Ótimo trabalho! Agora você tem o poder de criar seu próprio aplicativo de lista de tarefas em Python. O mais importante não é entender tudo perfeitamente, mas sim "primeiro, fazer funcionar, mesmo que seja copiando e colando". Ter algo que funciona e ir modificando aos poucos, experimentando com "o que acontecerá se eu mudar isso?", é o caminho mais rápido para melhorar, e eu vivi isso na prática.

Erros não são algo a temer, mas sim dicas para que seu programa fique ainda melhor. Mesmo que você não entenda uma mensagem de erro, pode colá-la diretamente em uma IA e perguntar "o que significa este erro e como posso corrigi-lo?", e na maioria das vezes ela lhe dará uma solução.

Sinta-se à vontade para adicionar ao aplicativo que criamos hoje uma "função de editar tarefas" ou uma "função para marcar tarefas concluídas" e transformá-lo na sua própria lista de tarefas definitiva!

Próximos Passos

Agora que você sabe criar um aplicativo básico, que tal se aventurar nos cálculos? A seguir, ensinamos como criar um aplicativo de calculadora simples que realiza as quatro operações aritméticas básicas.

Vamos criar um aplicativo de calculadora com Python! (operações aritméticas)