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!