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 ✨