Oii, Vitor! Tudo bem?
Excelente pergunta! É muito comum ter essa dúvida quando estamos começando a trabalhar com funções.
A resposta curta é: Sim, o seu código funciona! A lógica matemática está correta e ele atinge o objetivo de mostrar a idade na tela. Para scripts simples e de aprendizado inicial, não há nada de "errado" em fazer assim.
Porém, o exemplo do instrutor segue uma "boa prática" muito importante na programação chamada Separação de Responsabilidades. Vou te explicar o porquê de usarmos o return e separarmos o input da função:
1. Reutilização do código (flexibilidade)
Imagine que amanhã você decida criar um site ou um aplicativo de celular com esse mesmo cálculo.
- No seu código: A função
calcular_idade() obriga o usuário a digitar no terminal (input) e mostra o resultado no terminal (print). Ela não funcionaria num site, pois lá não existe terminal. - No código do instrutor: A função apenas calcula. Ela não sabe de onde vem o número (pode vir de um formulário de site, de um banco de dados, de um arquivo) e não sabe para onde vai o resultado. Isso torna a função "universal".
2. Testes automáticos
Em empresas, usamos programas para testar se nossas funções estão certas. É muito difícil testar uma função que pede interação humana (input). Já uma função que apenas recebe números e devolve (return) um resultado é super fácil de testar automaticamente!
Mas, o seu jeito não tá errado para o exercício, mas o jeito do instrutor prepara você para escrever códigos profissionais, onde cada "peça" (função) faz apenas uma coisa bem feita (neste caso, calcular), deixando a interação com o usuário para outra parte do programa.
Continue assim, questionar essas diferenças é o que vai te fazer um programador melhor.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!