1
resposta

Calculando o tempo total de projeto

Um pouco mais detalhado talvez ficaria assim:

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: "))

if (atividade_A >= 0 and atividade_B >= 0 and atividade_C >= 0):
    tempo_total = atividade_A + atividade_B + atividade_C
    print(f"O tempo total do projeto é de {tempo_total} dias.")
else: 
    print("Erro: Os dias não podem ser negativos.")

Ou
Se eu usar **list comprehension para coletar os valores em uma lista.

A **função all() verifica se todos os elementos são maiores ou iguais a zero.

A **função sum() calcula a soma direto, sem precisar criar uma variável extra.

Isso deixa o código mais compacto e ainda legível exemplo:

dias = [int(input(f"Informe os dias para a atividade {x}: ")) for x in ["A", "B", "C"]]

if all(d >= 0 for d in dias):
    print(f"O tempo total do projeto é de {sum(dias)} dias.")
else:
    print("Erro: Os dias não podem ser negativos.")

Ou.... A lista dias já coleta os três valores.

O print usa um if inline (expressão condicional) para decidir se mostra o total ou a mensagem de erro.

Resultado: apenas duas linhas de código.

dias = [int(input(f"Informe os dias para a atividade {x}: ")) for x in "ABC"]
print(f"O tempo total do projeto é de {sum(dias)} dias." if all(d >= 0 for d in dias) else "Erro: Os dias não podem ser negativos.")

Ou ainda usando (if any)
O print usa o if inline para decidir a mensagem.

dias = [int(input(f"Informe os dias para a atividade {x}: ")) for x in "ABC"]
print("Erro: Os dias não podem ser negativos." if any(d < 0 for d in dias) else f"O tempo total do projeto é de {sum(dias)} dias.")

EXPLICANDO (IF ALL / IF ANY )

# Usando all
if all(d >= 0 for d in dias):
    print(f"Total: {sum(dias)} dias")
else:
    print("Erro: valor negativo encontrado")

# Usando any
if any(d < 0 for d in dias):
    print("Erro: valor negativo encontrado")
else:
    print(f"Total: {sum(dias)} dias")
1 resposta

Olá, Giovany! Tudo bem?

Que aula de refatoração você deu aqui! É fantástico ver como você saiu de uma estrutura condicional clássica e evoluiu para o que chamamos de Pythonic Code (código funcional, conciso e elegante).

Como você é um estudante avançado (10k+ de XP!), essa transição para o uso de list comprehension e funções built-in como all() e any() mostra que você já está pensando em escalabilidade. Se o projeto tivesse 50 atividades em vez de 3, seu código continuaria tendo o mesmo número de linhas.


Analisando sua Evolução Lógica

**1. O uso de all() vs any()**
Ambas as funções são baseadas na Lógica Booleana e são extremamente úteis para validação de dados:

  • all() (E lógico): Só retorna verdadeiro se todos os elementos satisfizerem a condição. É excelente para garantir que o projeto inteiro seja válido.
  • any() (OU lógico): Retorna verdadeiro se pelo menos um elemento for negativo. É perfeito para criar "alertas de erro" rápidos.

2. List Comprehension e Performance
Ao usar [int(input(...)) for x in "ABC"], você está usando um iterável de forma muito inteligente. Python é otimizado para esse tipo de operação, tornando o processamento levemente mais rápido do que múltiplos inputs manuais.

3. If Inline (Operador Ternário)
O seu exemplo de duas linhas é o ápice da concisão. Na programação web ou em análise de dados, usamos muito isso para retornar mensagens rápidas de status ou formatar valores em templates.


Uma pequena dica de "Defesa" (Tratamento de Erros)

Como você está usando int(input()), se o usuário digitar uma letra em vez de um número, o programa ainda vai quebrar com um ValueError. Para deixar seu código indestrutível, o próximo passo seria envolver essa lógica em um bloco try-except:

try:
    dias = [int(input(f"Informe os dias para a atividade {x}: ")) for x in "ABC"]
    print(f"Total: {sum(dias)} dias" if all(d >= 0 for d in dias) else "Erro: Dias negativos.")
except ValueError:
    print("Erro: Por favor, digite apenas números inteiros.")

Parabéns pela postagem, Giovany! Esse tipo de contribuição ajuda demais os colegas que estão começando a entender que programar não é só fazer o código rodar, mas sim escrever de forma que seja fácil de manter e ler.

Espero que possa ter lhe ajudado!

Uma dúvida: Na sua opinião, qual das versões você acha que seria mais fácil de um colega de equipe (que não conhece muito Python) entender e dar manutenção no futuro?