Solucionado (ver solução)

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!

Solucionado
(ver solução)
1
resposta

[Projeto] Calculando o tempo total de projeto

# 2
def quant_dias(atividadeA, atividadeB, atividadeC):
    if atividadeA < 0 or atividadeB < 0 or atividadeC < 0:
        return 'ERRO: Os dias não podem ser negativos.'
      
    else:
        soma = atividadeA + atividadeB + atividadeC
        return f'Serão necessários {soma} dias para realizar todas as atividades.'

resultado1 = quant_dias(5, -5, 5)
resultado2 = quant_dias(10, 10, 10)
print(resultado1)
print(resultado2)

Estou treinando fazer os exercício colocando o cógido na função.
Há a possibilidade de colocarmos os 'inputs' dentro da função? E como chamaríamos a função sem nenhuma variável?

1 resposta
solução!

Oii Evandro, tudo bem?

Que boa pergunta! Sim, é totalmente possível colocar os input() dentro da função. Nesse caso, a função cuida de tudo: coleta os dados e faz o cálculo. E para chamá-la, você simplesmente usa o nome dela sem passar nenhum argumento:

def quant_dias():
    atividadeA = int(input("Digite os dias da atividade A: "))
    atividadeB = int(input("Digite os dias da atividade B: "))
    atividadeC = int(input("Digite os dias da atividade C: "))
    
    if atividadeA < 0 or atividadeB < 0 or atividadeC < 0:
        return 'ERRO: Os dias não podem ser negativos.'
    else:
        soma = atividadeA + atividadeB + atividadeC
        return f'Serão necessários {soma} dias para realizar todas as atividades.'

resultado = quant_dias()
print(resultado)

Note que os parênteses ficam vazios na definição e também na chamada, porque a função não recebe parâmetros externos: ela mesma busca os valores.

A diferença importante entre as duas abordagens é a flexibilidade. Com parâmetros (como você fez no seu código original), a função pode ser reutilizada com qualquer valor, incluindo valores vindos de outras partes do código, de arquivos, de APIs, etc. Com input() dentro, ela sempre vai depender de alguém digitando na hora. Para fins de prática e aprendizado, as duas formas são válidas!

Seu código original ficou bem estruturado, por sinal. A validação dos negativos antes de qualquer cálculo é exatamente a abordagem certa.

Conte com a Alura para evoluir seus estudos. Em caso de dúvidas, fico à disposição.

Bons estudos!

Sucesso

Imagem da comunidade