Oi, Evandro! Tudo ótimo por aqui, e com você?
Excelente pergunta! O código de exemplo que usei na resposta anterior foi escrito em JavaScript (que é bem comum no desenvolvimento web), mas você tem toda razão em notar a semelhança. Java, JavaScript, Python e muitas outras linguagens compartilham conceitos parecidos, mudando apenas a forma de escrever (a sintaxe).
Não há problema nenhum em fazer em Python, pelo contrário! Usar a linguagem com a qual você já tem afinidade é a melhor forma de estudar. E pode ficar tranquilo: funções costumam gerar dúvidas no começo, mas, assim que pegamos a lógica de "entrada, processamento e saída", tudo clareia.
Analisando a lógica que você propôs no seu novo algoritmo, você teve uma ótima iniciativa ao permitir que o usuário escolha a direção da conversão (Real para Dólar ou Dólar para Real). Isso deixa o programa completo!
Para te ajudar a superar esse "calcanhar de Aquiles", vamos ajustar dois pontos importantes sobre como as funções operam:
- Onde pedir os dados: Em vez de colocar os comandos de leitura (
digite a moeda..., digite a taxa...) dentro da função, o ideal é deixar que o programa principal faça as perguntas ao usuário. A função deve focar apenas em receber esses valores prontos, calcular e devolver o resultado. - Parâmetros de entrada: Os parâmetros que colocamos entre parênteses na função servem para enviar os dados que ela precisa para calcular. No seu rascunho,
valor_final foi colocado ali, mas ele na verdade é o resultado que a função vai descobrir e devolver através do return.
Veja como essa sua mesma ideia fica estruturada de forma limpa em Python:
A função recebe apenas o valor a ser convertido, a taxa de câmbio e a direção da conversão. Ela faz o cálculo e faz o return do resultado:
def converter_moedas(valor_origem, tx_cambio, moeda_origem):
# se a origem é Real, dividimos pela taxa para achar o Dólar
if moeda_origem == "R":
valor_final = valor_origem / tx_cambio
# se a origem é Dólar, multiplicamos pela taxa para achar o Real
else:
valor_final = valor_origem * tx_cambio
return valor_final # Devolve o resultado para quem chamou a função
O programa principal (Interação com o usuário)
Aqui fora é onde fazemos as perguntas e chamamos a função passando os dados capturados:
# 1. Coleta dos dados
origem = input("Digite a moeda de origem: (R) Real ou (D) Dólar: ").upper()
valor = float(input("Digite o valor que você quer converter: "))
taxa = float(input("Digite a taxa de câmbio atual: "))
# 2. chamada da função guardando o retorno em uma variável
resultado = converter_moedas(valor, taxa, origem)
# 3. exibição do resultado
if origem == "R":
print(f"R$ {valor} equivale a US$ {resultado:.2f}")
else:
print(f"US$ {valor} equivale a R$ {resultado:.2f}")
Repare como o return da função entrega o valor calculado direto para a variável resultado no programa principal.
Conseguiu perceber a diferença entre o que a função recebe de informação e o que ela devolve no final?
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!