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

[Dúvida] Resolução: Funções.

Com o meu nível de conhecimento atual, eu resolvi o exercício dessa forma:
Input:

def idade_ano_nascimento():
# Estou treinando tratamento de erros, aqui irei usar o Exception, pois é o primeiro exercício de teste e esse parâmetro "exception" é global, mas nos próximos exercícios irei classificar cada erro em sua categoria!
    try:
        ano_nascimento = int(input('Digite o ano de nascimento: '))
        ano_atual = int(input('Digite o ano atual: '))
        idade_atual = ano_atual - ano_nascimento
        return print(f'A idade é: {idade_atual} anos.')
# Fiquei receoso de ter usado o "return" com o "print()", pois sinto que é código sem utilidade, já que na própria correção do exercício é utilizado o "return" sem o "print". Entendo que lá o return é usado com variáveis, *sigo com esse receio no momento*
    except Exception as erro:
        print('Valor inválido, utilize apenas números inteiros.')
        idade_ano_nascimento() # caso o usuário erre, retornará para o programa...

idade_ano_nascimento() # descobri aqui que tem que "chamar" a função e não somente criar ela.
print('Fim do programa.') 

Output:

Digite o ano de nascimento: 2002
Digite o ano atual: 2026
A idade é: 24 anos.
Fim do programa.

Correção | Alura:

def calcular_idade(ano_nascimento, ano_atual): #aqui eu percebo que os parâmetros já são criados junto com a função, não precisando estender as linhas de código abaixo
    return ano_atual - ano_nascimento #esse return já define que os parâmetros criados irão entrar em uma subtração
 
nascimento = int(input("Digite o ano de nascimento: ")) 
atual = int(input("Digite o ano atual: ")) 
idade = calcular_idade(nascimento, atual) 
print(f"A idade é {idade} anos.") 

Sinto que fiz um caminho mais longo para o mesmo resultado e talvez eu tenha tirado um pouco da "funcionalidade" da função, que tem como papel facilitar modificações em projetos grandes. Treinarei isso antes de seguir para o próximo exercício.
Gostaria de dicas que me ajudarão nos próximos exercícios e melhorias usando como base esse exemplo! Qualquer direcionamento à partir daqui eu agradeço.
Abs!

1 resposta
solução!

Oi, Matheus. Tudo bem com você?

Obrigado por compartilhar sua resolução e também as reflexões que fez durante o exercício. Dá para perceber que você não ficou apenas preocupado em chegar ao resultado, mas também em entender o motivo de cada escolha, principalmente em relação ao uso do return, do print() e do tratamento de exceções. Esse tipo de análise costuma contribuir bastante para a evolução na linguagem.

Sobre o return print(...), seu receio faz sentido. Como print() apenas exibe uma informação e retorna None, o return acaba não agregando utilidade nesse caso. Em situações como a proposta da atividade, o mais comum é a função apenas calcular e retornar o valor, deixando a exibição para quem chamou a função. Isso torna o código mais reutilizável, pois a mesma função poderia ser utilizada em outros contextos, como salvar o resultado em uma variável ou realizar novos cálculos.

Outro ponto interessante é que você decidiu praticar tratamento de exceções por iniciativa própria. Embora a atividade não exigisse isso, esse tipo de experimentação ajuda bastante no aprendizado. Apenas como dica para os próximos exercícios, evite chamar a própria função dentro do except, pois muitas chamadas consecutivas podem acumular na pilha de execução. Em cenários futuros, estruturas de repetição costumam ser uma alternativa mais adequada para repetir a entrada de dados.

Como próximo desafio, você conseguiria adaptar essa mesma função para receber os valores por parâmetro, mantendo o tratamento de erros separado da lógica de cálculo?

Parabéns pela dedicação e por compartilhar seu raciocínio. Continue trazendo suas soluções para o fórum. Será um prazer acompanhar sua evolução.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!