Usei um dicionário (moedas) para organizar as informações. Isso é superior a vários if/else, pois facilita adicionar novas moedas sem alterar a lógica do menu.
A função converter_moeda agora não apenas divide o valor pela taxa, mas subtrai 1% do resultado final, simulando uma taxa de serviço real de corretagem ou IOF.
O código percorre o dicionário (for key, info in moedas.items()) para gerar o menu automaticamente. Se você decidir mudar o nome de uma moeda, o menu se atualizará sozinho.
Segurança: O programa continua tratando entradas inválidas, garantindo que o usuário não consiga "quebrar" o sistema digitando textos onde deveriam estar números.
def converter_moeda(valor_reais, taxa_cambio):
"""Calcula a conversão aplicando a taxa de serviço de 1%."""
# 1% de taxa sobre o valor convertido (ou sobre o original, aqui aplicado ao final)
valor_liquido = valor_reais / taxa_cambio
taxa_servico = valor_liquido * 0.01
return valor_liquido - taxa_servico
def sistema_conversor():
# Dicionário com as 4 moedas mais usadas (Taxas aproximadas)
moedas = {
"1": {"nome": "Dólar Americano (USD)", "taxa": 5.50},
"2": {"nome": "Euro (EUR)", "taxa": 6.00},
"3": {"nome": "Libra Esterlina (GBP)", "taxa": 7.10},
"4": {"nome": "Iene Japonês (JPY)", "taxa": 0.035}
}
print("--- Conversor Global de Moedas (Taxa de 1% aplicada) ---")
try:
valor = float(input("Digite o valor em Reais (R$): "))
if valor < 0:
print("Erro: Valor negativo não permitido.")
return
except ValueError:
print("Erro: Valor inválido.")
return
print("\nEscolha a moeda para conversão:")
for key, info in moedas.items():
print(f"{key} - {info['nome']}")
escolha = input("\nDigite o número da opção desejada: ")
if escolha in moedas:
moeda_escolhida = moedas[escolha]
resultado = converter_moeda(valor, moeda_escolhida["taxa"])
print(f"\nResultado em {moeda_escolhida['nome']}: {resultado:.2f}")
print("(Valor já com desconto da taxa de serviço de 1%)")
else:
print("Opção inválida!")
sistema_conversor()