Rullst AcademyRullst Academy/Lição
Python: da primeira linha ao projeto · Lição 12 / 12

Seu organizador de pequenas missões

Chegou a hora de juntar as peças: dados, decisões, repetição, funções, arquivos e testes. Seu programa escolhe missões fictícias que cabem no tempo disponível.

Trilhas de aprendizado18 min

Vamos descobrir juntos

  1. 1

    A regra percorre a lista na ordem. Ignora missões concluídas e aceita uma pendente se sua duração couber no tempo restante. Depois subtrai essa duração. Uma missão grande demais é pulada; o laço continua.

  2. 2

    Tico usa 10 minutos, Luma 20 e Nilo 15, mas Nilo já está concluída. Com limite 30, entram Tico e Luma: total 30, sobra 0. Com 25, entra só Tico: total 10, sobra 15.

  3. 3

    O exemplo é o núcleo da regra, com dados preparados. O projeto para baixar acrescenta validação, missions.json, relatório e testes. Extraia todos os arquivos, execute organizer.py e depois python -m unittest -v (python3 no macOS/Ubuntu).

  4. 4

    A ordem importa: com Luma antes de Tico e limite 25, Luma é escolhida. Essa regra não procura a melhor combinação possível. Revise a ordem, teste e explique sua decisão; um programa útil precisa declarar o que faz e o que não considera.

  5. 5

    O editor da Rullst Academy guarda um arquivo por envio; o ZIP traz o projeto completo inicial. Para publicar todos os arquivos, extraia o ZIP e use o guia PUBLISH.md. O programa não envia nada à internet. --save cria report.txt e recusa sobrescrever um relatório existente.

  6. 6

    Esta trilha usa somente a biblioteca padrão. Em projetos futuros com pacotes externos, use um ambiente virtual por projeto: ele separa instalações de pacotes, mas não torna código desconhecido seguro. Consulte o guia venv antes de instalar; não use sudo pip nem publique a pasta .venv.

DA LIÇÃO PARA A PRÁTICA

Guia para acompanhar no seu ritmo

Leia os passos antes de usar a referência abaixo. Comandos são executados no terminal do sistema indicado; o cadastro acontece no site oficial. Os exercícios da Rullst Academy são treino e não verificam sua instalação ou conta externa.

def plan(tasks, budget):
    selected = []
    remaining = budget
    for task in tasks:
        if not task["done"] and task["minutes"] <= remaining:
            selected.append(task["title"])
            remaining -= task["minutes"]
    return selected, budget - remaining, remaining

tasks = [{"title": "Tico", "minutes": 10, "done": False},
         {"title": "Luma", "minutes": 20, "done": False},
         {"title": "Nilo", "minutes": 15, "done": True}]
print(plan(tasks, 30))

Links oficiais e próximo passo

✦
SUA MISSÃO

Executar, modificar e testar um projeto local; explicar sua regra de seleção e seus limites.

Agora é a sua vez

Oficina de descobertas

Leia, preveja, confira

Compare as duas versões. Mostrar resultado revela uma saída preparada: este painel não executa Python. Depois pratique com o arquivo da atividade.
Mini experimento

Simulação didática: compare os cartões e confira suas previsões. O navegador não está compilando Rust nem iniciando um servidor.

def plan(tasks, budget):
    selected = []
    remaining = budget
    for task in tasks:
        if not task["done"] and task["minutes"] <= remaining:
            selected.append(task["title"])
            remaining -= task["minutes"]
    return selected, budget - remaining, remaining

tasks = [{"title": "Tico", "minutes": 10, "done": False},
         {"title": "Luma", "minutes": 20, "done": False},
         {"title": "Nilo", "minutes": 15, "done": True}]
print(plan(tasks, 30))
Monte suas respostas e confira quando estiver pronto.
Uma pausa para entender

A regra sempre escolhe a combinação que usa mais minutos?

Preciso de uma pista

Compare as saídas ao inverter Tico e Luma com limite 25.

Carregando sua jornada…

Como perceber o que aprendi?

Use os objetivos e o desafio abaixo como uma conversa com você mesmo ou com alguém que possa ajudar. É uma autoavaliação orientada: não envia respostas, não concede XP e não verifica automaticamente sua autonomia.

Em Fundamentos, altere um exemplo, preveja o resultado, confira um caso comum e um caso de erro, e explique suas escolhas. Se precisar de ajuda, identifique o trecho que quer praticar novamente.

Seu desafio de transferência

Baixe e execute o projeto. Altere o limite para 25, teste outra ordem e acrescente uma missão fictícia. Inclua um teste novo e registre previsão, saída, mudança e limite do modelo. O texto autoral não recebe nota automática.

Guarde uma evidência: previsão, tentativa, resultado, uma mudança sua e o que ainda não consegue explicar. Quando possível, peça feedback a alguém; se estudar sozinho, retome depois sem copiar e compare suas tentativas.

Tente de novo em outro momento

Depois de uma pausa, explique a ideia sem abrir a solução e tente um exemplo diferente. Compare com sua primeira tentativa: o que consegue fazer sozinho e onde precisa de uma pista? Você pode escrever, falar ou desenhar; escolha uma forma que permita conferir a mesma ideia. Registre ajuda recebida, inclusive de IA, e volte ao trecho necessário. Não há prazo universal nem XP extra por esse registro.

Conclusões e XP registram as avaliações da Rullst Academy. Uma trilha introdutória pode ajudar na vida cotidiana e preparar próximos estudos; sozinha não comprova domínio completo ou preparo profissional. O nível indica profundidade, não idade.

Leve com você

Baixe e execute o projeto. Altere o limite para 25, teste outra ordem e acrescente uma missão fictícia. Inclua um teste novo e registre previsão, saída, mudança e limite do modelo. O texto autoral não recebe nota automática.

PYTHON · .py

Sua bancada Python

Aqui você lê e prevê saídas preparadas. Para executar o código de verdade, baixe o arquivo da atividade, edite no computador e use Python. A correção da Rullst Academy avalia as respostas da lição, não comprova a execução local.

Salvar e executar

Extraia o ZIP da atividade numa pasta própria. Abra o terminal nessa pasta e use o comando do seu sistema. Se baixar o arquivo editado separadamente, use o nome real dele no comando. Salve antes de executar novamente.

Windows
python organizer.py
macOS / Ubuntu
python3 organizer.py
Meus arquivos e GitHub

O editor mantém um rascunho local e pode enviar um arquivo .py ao GitHub com sua confirmação. Baixe seu código editado para preservá-lo. O ZIP é material inicial; no projeto final, publique também os arquivos de dados e testes seguindo PUBLISH.md.

No seu ritmo

Meus arquivos e GitHub

Toda lição pode virar um registro seu: código, anotações ou um plano de prática. Guardar um arquivo no GitHub é opcional e não altera seu XP.

Manual do aluno

O editor e os downloads abrem quando esta lição estiver liberada para sua conta. Confira o acesso abaixo ou volte ao mapa da trilha.

Conferindo seu acesso à lição…

Rullstpetbot

A IA pode errar. Confira no material da lição.