Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

3
respostas

[Sugestão] 05 - Calculando o tempo total de projeto

Camila está organizando um projeto e precisa calcular o tempo total necessário para concluir três atividades: A, B e C. No entanto, se alguma atividade tiver um número de dias negativo, o código deve avisar que os valores inseridos são inválidos e não calcular o total.

Escreva um programa que receba o número de dias de três atividades e exiba o tempo total do projeto. Se algum valor for negativo, mostre uma mensagem informando o erro.

lista = ['A', 'B', 'C']
dias = 0

for i in lista:
    atividade = int(input(f'Informe os dias para a atividade {i}: '))
    if atividade < 0:
        print('Valor inválido. Por favor, insira um número positivo de dias.')
    else:
        print(f'Atividade {i} registrada com {atividade} dias.')
        dias += atividade

print(f'O total de dias para concluir as atividades é: {dias}')
3 respostas

Olá, Malderson. Como vai?

Excelente iniciativa em compartilhar sua solução! Utilizar uma lista para iterar sobre as atividades A, B e C torna o código muito mais limpo e escalável do que criar variáveis isoladas para cada uma. Como consultor de TI, você sabe que a manutenibilidade do código é fundamental.

Analisando sua lógica, notei um ponto interessante para reflexão sobre o fluxo do programa: no seu código atual, se o usuário digitar um valor negativo para a atividade A, o sistema avisa que é inválido, mas continua pedindo os dias para B e C e, ao final, exibe a soma dos valores positivos.

De acordo com o enunciado, se algum valor for negativo, o código deve avisar que os valores são inválidos e não calcular o total. Para atingir esse comportamento de "parada total", podemos utilizar a palavra-chave break ou uma variável de controle.

Aqui está uma sugestão de melhoria implementando uma interrupção imediata:

lista = ['A', 'B', 'C']
dias = 0
valores_validos = True

for i in lista:
    atividade = int(input(f'Informe os dias para a atividade {i}: '))
    
    if atividade < 0:
        print('Valor inválido. Por favor, insira um número positivo de dias.')
        valores_validos = False
        break  # Interrompe o loop imediatamente
    else:
        print(f'Atividade {i} registrada com {atividade} dias.')
        dias += atividade

if valores_validos:
    print(f'O total de dias para concluir as atividades é: {dias}')

O que mudou e por que agrega valor:

  • Uso do break: Assim que o programa detecta um número negativo, ele para de fazer perguntas inúteis ao usuário, economizando tempo e processamento.
  • Variável de controle (valores_validos): Ela garante que a frase final com o total de dias só seja exibida se todas as entradas passarem na validação.
  • Boas práticas: Em sistemas reais, validar os dados na "entrada" (input) evita que erros se propaguem para o restante da aplicação.

Seu raciocínio com listas foi ótimo. Continue explorando como as estruturas de repetição interagem com as condicionais para criar fluxos de trabalho cada vez mais robustos!

Espero que possa ter lhe ajudado!

Muito bem observado! Agradeço o feedback a sugestão e já está anotado para melhorias.

Parabéns pelo código Malderson!

Professor @Evandro, pensando no feedback passado na atidade do @Malderson proponho o seguinte código:

lista = ['A', 'B', 'C']
dias = 0

for i in lista:

while True:
    entrada = input(f'Informe os dias para a atividade {i}: ')

    try:
        atividade = int(entrada)

        if atividade < 0:
            print('Valor inválido. Digite apenas números inteiros positivos.')
        else:
            print(f'Atividade {i} registrada com {atividade} dias.')
            dias += atividade
            break

    except ValueError:
        print('Entrada inválida. É necessário digitar um número inteiro.')

print(f'\nO total de dias para concluir as atividades é: {dias}')

Nele é utilizado o aprendizado do módulo anterior: Python para Dados: trabalhando com funções, estruturas de dados e exceções.

O código visa solicitar novamente o dia que foi digitado de maneira não condizente com o proposto e ao invés de dar break o código informa o erro do usuário e faz a solicitação do dado novamente assim podendo concluir o objetivo inicial do código proposto, que é calcular a soma em dias das 3 atividades A, B e C