1
resposta

Calculando o tempo total de projeto

a = float(input("Iforme os dias para a atividade A: ").replace(",", "."))
b = float(input("Iforme os dias para a atividade B: ").replace(",", "."))
c = float(input("Iforme os dias para a atividade C: ").replace(",", "."))

if a < 0 or b < 0 or c < 0:
    print("Erro: Os valores inseridos são inválidos.")
else: 
    soma = a + b + c
    print(f"Tempo total do projeto: {soma} dias")

# USANDO FUNÇÃO E LISTA
atividades = [
    float(input("Dias para a atividade A: ").replace(",", "."))
    float(input("Dias para a atividade B: ").replace(",", "."))
    float(input("Dias para a atividade C: ").replace(",", "."))
]

if any(dia < 0 for dia in atividades):
    print("Erro: Os valores inseridos são inválidos.")
else:
    soma = sum(atividades)
    print(f"Tempo total do projeto: {soma} dias")
1 resposta

Olá, Luísa. Como vai?

Sua linha de raciocínio é excelente! Você resolveu muito bem o problema principal utilizando a estrutura condicional if/else para validar se existia algum valor negativo. Além disso, a sacada de usar o .replace(",", ".") mostra uma grande preocupação com a experiência do usuário, permitindo que as pessoas usem a vírgula como separador decimal sem quebrar o programa.

A sua segunda abordagem, utilizando listas e as funções nativas any() e sum(), é o jeito mais elegante e idiomático (o famoso estilo pythonico) de resolver esse problema.

Contudo, se você tentar rodar o segundo código exatamente como está, o Python vai apresentar um erro de sintaxe (SyntaxError). Vamos entender o porquê e como corrigir:

O Ajuste de Sintaxe na Lista
Dentro do Python, quando criamos uma lista e quebramos as linhas para colocar os elementos, precisamos obrigatoriamente separar cada item por uma vírgula. Caso contrário, o interpretador não consegue identificar onde termina uma expressão e onde começa a outra.

Basta adicionar uma vírgula ao final das duas primeiras linhas dentro dos colchetes:

# USANDO FUNÇÃO E LISTA (Corrigido)
atividades = [
    float(input("Dias para a atividade A: ").replace(",", ".")),
    float(input("Dias para a atividade B: ").replace(",", ".")),
    float(input("Dias para a atividade C: ").replace(",", "."))
]

if any(dia < 0 for dia in atividades):
    print("Erro: Os valores inseridos são inválidos.")
else:
    soma = sum(atividades)
    print(f"Tempo total do projeto: {soma} dias")

Levando o código para o próximo nível
Se no futuro o seu projeto passar a ter 10, 20 ou 50 atividades, digitar a mesma linha de input várias vezes vai se tornar cansativo. Como você já está usando listas, uma excelente prática para automatizar esse processo é utilizar um laço for para capturar os dados dinamicamente:

atividades = []
nomes_atividades = ["A", "B", "C"]

for nome in nomes_atividades:
    valor = float(input(f"Dias para a atividade {nome}: ").replace(",", "."))
    atividades.append(valor)

if any(dia < 0 for dia in atividades):
    print("Erro: Os valores inseridos são inválidos.")
else:
    soma = sum(atividades)
    print(f"Tempo total do projeto: {soma} dias")

Dessa forma, se o número de atividades aumentar, você só precisa modificar a lista nomes_atividades e o resto do programa continua funcionando perfeitamente sem repetição de código.

Parabéns pela iniciativa de buscar duas soluções diferentes para o mesmo problema!

Espero que possa ter lhe ajudado!