Olá, Estudante. Como vai?
Excelente resolução! Você aplicou uma das regras de ouro da programação e da gestão de projetos: a validação de dados. Com 26.8k de XP, você já sabe que o código não deve apenas calcular, mas também garantir que os dados façam sentido (afinal, não existe "tempo negativo" em um cronograma).
Gostaria de destacar dois pontos muito positivos na sua abordagem e deixar uma sugestão para elevar o nível desse script:
O que está excelente:
- Lógica de Erro Antecipada: Você usou o
if para filtrar os erros logo no início. Isso é o que chamamos de fail-fast (falhar rápido), evitando que o computador gaste processamento com cálculos que resultariam em um dado inválido. - Operadores Lógicos: O uso do
or foi a escolha perfeita aqui. Se qualquer uma das atividades estiver errada, o projeto todo está comprometido.
Dica Pro: Refatorando para Escalabilidade
Imagine que seu projeto cresça e agora tenha 10 ou 15 atividades. Escrever atividade_a < 0 or atividade_b < 0... ficaria exaustivo, certo?
Uma forma bem "Pythonica" de resolver isso seria usando uma lista e a função any() ou all(). Veja como ficaria elegante:
# Coletando os valores em uma lista
atividades = [atividade_a, atividade_b, atividade_c]
# Se EXISTIR (any) algum valor menor que zero
if any(dias < 0 for dias in atividades):
print("Erro: os valores não podem ser negativos.")
else:
print(f"O tempo total do projeto é de {sum(atividades)} dias.")
Por que isso é legal?
any(): Verifica se pelo menos um item da lista atende à condição.sum(): Soma todos os itens da lista de uma vez só, sem precisar criar variáveis intermediárias.
Uma dúvida para você: Se o seu gestor pedisse para o programa ignorar os valores negativos em vez de dar erro (considerando-os como 0), como você alteraria a sua lógica de soma?
Parabéns pelo progresso constante! Seu código está limpo e muito bem estruturado.