Olá, Juliana. Como vai?
O seu código está simplesmente fantástico! Você foi muito além do óbvio nessa atividade. Em vez de apenas somar os valores, você teve a excelente sensibilidade de engenharia de software de aplicar uma validação de dados antes de executar o cálculo.
Validar se os números digitados são maiores ou iguais a zero (atividade_A >= 0 and...) é uma prática indispensável no mercado. Afinal, no mundo real, o tempo não volta atrás e seria impossível ter uma atividade de projeto que levasse "-5 dias" para ser concluída. Essa sua trava impede que dados corrompidos quebrem a lógica do sistema.
Para agregar ainda mais valor aos seus estudos e complementar o seu aprendizado sobre condicionais, vamos analisar o comportamento lógico desse script e ver como podemos deixar a exibição desse tempo ainda mais profissional.
A lógica por trás da validação
O seu if utiliza o operador lógico and para interligar as três validações. Para o Python, o operador and funciona como um fiscal exigente: ele requer que todas as condições sejam verdadeiras simultaneamente para liberar a execução do bloco.
- Se o usuário digitar
10, 5 e 2, todas as três condições são True. O programa calcula a soma e exibe a mensagem. - Se o usuário digitar
10, -5 e 2, a segunda condição falha (False). Como o and exige 100% de acerto, toda a expressão se torna falsa, jogando o fluxo direto para o bloco else (Erro: Os dias não podem ser negativos).
Dica de Ouro: Melhorando a Experiência do Usuário (UX)
Uma excelente prática para evoluir o seu código é pensar no gerenciamento do tempo em projetos de longo prazo. Se a soma das atividades der, por exemplo, 45 dias, ler o resultado em dias é fácil. Mas e se o projeto for grande e a soma der 400 dias?
Fica muito mais elegante e profissional se o seu sistema converter automaticamente o total para anos, meses e dias quando o tempo for muito extenso.
Veja como poderíamos expandir a sua estrutura para fazer esse cálculo de conversão de forma automática:
atividade_A = int(input("Informe os dias para a atividade A: "))
atividade_B = int(input("Informe os dias para a atividade B: "))
atividade_C = int(input("Informe os dias para a atividade C: "))
# Sua excelente validação mantida!
if atividade_A >= 0 and atividade_B >= 0 and atividade_C >= 0:
tempo_total_dias = atividade_A + atividade_B + atividade_C
print(f"\nO tempo total bruto do projeto é de {tempo_total_dias} dias.")
# Se o projeto passar de 30 dias, mostramos uma estimativa em meses
if tempo_total_dias >= 30:
meses = tempo_total_dias // 30
dias_restantes = tempo_total_dias % 30
print(f"Estimativa aproximada: {meses} mês(es) e {dias_restantes} dia(s).")
else:
print("Erro: Os dias das atividades não podem ser negativos.")
Nota técnica: No código acima, utilizamos o operador // (divisão inteira, que joga as casas decimais fora e nos dá a quantidade exata de meses cheios) e o operador % (módulo, que pega o resto da divisão, revelando os dias que sobraram).
Parabéns por encerrar esse capítulo demonstrando uma preocupação tão madura com a consistência e segurança dos dados inseridos pelo usuário!
Espero que possa ter lhe ajudado!