Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Está conforme a atividade?

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

total_dias = atividade_A + atividade_B + atividade_C

"""         T                     T                   F            """      # Exemplo Tabela Verdade
if (atividade_A <= 0) or (atividade_B <= 0) or (atividade_C <= 0):
    print("Erro: os dias nao podem ser negativos")
else:
    print("O projeto terá duração total de {} dias.".format(total_dias))
1 resposta
solução!

Oii, Samuel!

Vamos por partes, comparando a ideia da atividade, o gabarito e o código que você escreveu.

1. O que a atividade pede exatamente

A proposta é a seguinte:

  • Ler os dias de três atividades (A, B e C)

  • Se algum valor for negativo, o programa deve:

    • Avisar que os valores são inválidos
    • Não calcular o total
  • Caso contrário (todos válidos), deve:

    • Somar os dias
    • Mostrar o tempo total do projeto

valores negativos são inválidos, mas zero é permitido.

2. O que o gabarito faz

No gabarito, a verificação é esta:

if (atividade_A >= 0 and atividade_B >= 0 and atividade_C >= 0):

Isso significa:

  • Todos os valores precisam ser maiores ou iguais a zero
  • Se qualquer um for negativo, o if falha e cai no else

Essa condição atende exatamente ao enunciado.

3. Onde tá o problema no seu código:

a condição foi:

if (atividade_A <= 0) or (atividade_B <= 0) or (atividade_C <= 0):

Aqui existem dois pontos de atenção:

a) Uso de <= 0

Esse operador considera zero como erro, mas zero não é negativo.
Ou seja, se a pessoa informar 0 dias para uma atividade (o que é válido), o programa vai acusar erro.

b) Lógica invertida

O código verifica primeiro a condição de erro, enquanto o gabarito verifica primeiro a condição válida.
Isso não é errado por si só, mas exige muito cuidado com os operadores usados.

4. Como ajustar o seu código mantendo a mesma ideia

Se a intenção for continuar verificando o erro primeiro, o correto seria usar < 0:

if (atividade_A < 0) or (atividade_B < 0) or (atividade_C < 0):
    print("Erro: os dias não podem ser negativos")
else:
    total_dias = atividade_A + atividade_B + atividade_C
    print("O projeto terá duração total de {} dias.".format(total_dias))

Assim:

  • Apenas números negativos geram erro
  • Zero é aceito
  • O comportamento fica alinhado com o enunciado e com o gabarito

Respondendo a sua dúvida:

  • A estrutura geral do código tá correta
  • O problema tá na condição, que usa <= 0 em vez de < 0
  • O gabarito está correto porque permite zero e bloqueia apenas números negativos

Esse tipo de ajuste é muito comum no início e faz parte do aprendizado. O raciocínio já está bem encaminhado, agora é só lapidar os detalhes da lógica.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!