Conversor de Monedas en Python
Segundo proyecto de la guia 50 Proyectos de Programacion para Practicar y Aprender. Proyectos para Principiantes
Enunciado del proyecto
Este es un conversor de monedas que permite convertir entre diferentes divisas utilizando tasas de cambio definidas.
Cรณdigo Python:
import requests
def obtener_tasa_cambio(moneda_origen, moneda_destino):
"""
Obtiene la tasa de cambio entre dos monedas utilizando
una API externa.
En este ejemplo, usaremos una API de ejemplo
(puedes usar una API real como exchangerate.host).
Esta funciรณn es un esqueleto y necesita ser
implementada con una API real.
Args:
moneda_origen (str): Cรณdigo de la moneda de origen
(ej: USD).
moneda_destino (str): Cรณdigo de la moneda de destino
(ej: EUR).
Returns:
float: Tasa de cambio. Devuelve None si no se
puede obtener la tasa.
"""
try:
# Reemplaza esta URL con la URL de la API real que
# vayas a usar.
# Por ejemplo, para exchangerate.host:
# url = f"https://api.exchangerate.host/
#convert?from={moneda_origen}&to={moneda_destino}"
# Para una API ficticia:
url = f"https://api.example.com/currency?
from={moneda_origen}&to={moneda_destino}"
#URL Ficticia, debes modificarla
# Realiza la peticiรณn a la API
response = requests.get(url)
response.raise_for_status()
# Lanza una excepciรณn para cรณdigos de error
#HTTP (4xx o 5xx)
data = response.json()
# El formato de la respuesta dependerรก de la API.
# Aquรญ se asume un formato.
# Debes ajustar esto segรบn la documentaciรณn de la
# API que uses.
tasa_cambio = data['rate']
# 'rate' es un ejemplo, puede ser
#'conversion_rate', 'result', etc.
return tasa_cambio
except requests.exceptions.RequestException as e:
print(f"Error de conexiรณn: {e}")
return None
except (KeyError, TypeError) as e:
print(f"Error al procesar la respuesta de la API:
{e}")
return None
def convertir_moneda(cantidad, moneda_origen,
moneda_destino):
"""
Convierte una cantidad de una moneda a otra.
Args:
cantidad (float): La cantidad a convertir.
moneda_origen (str): Cรณdigo de la moneda de origen (ej: USD).
moneda_destino (str): Cรณdigo de la moneda de destino (ej: EUR).
Returns:
float: La cantidad convertida, o None si hubo
un error.
"""
tasa = obtener_tasa_cambio(moneda_origen,
moneda_destino)
if tasa is None:
print("No se pudo obtener la tasa de cambio.")
return None
cantidad_convertida = cantidad * tasa
return cantidad_convertida
def main():
"""
Funciรณn principal que interactรบa con el usuario.
"""
print("Bienvenido al Conversor de Monedas")
moneda_origen = input("Ingrese la moneda de origen
(ej: USD): ").upper()
moneda_destino = input("Ingrese la moneda de destino
(ej: EUR): ").upper()
try:
cantidad = float(input("Ingrese la cantidad a
convertir: "))
except ValueError:
print("Cantidad invรกlida. Ingrese un nรบmero.")
return
resultado = convertir_moneda(cantidad, moneda_origen,
moneda_destino)
if resultado is not None:
print(f"{cantidad} {moneda_origen} son equivalentes
a {resultado:.2f} {moneda_destino}")
if __name__ == "__main__":
main()
Conversor de Monedas en Python. Explicaciรณn del Cรณdigo:
obtener_tasa_cambio(moneda_origen, moneda_destino)
:
Esta funciรณn (incompleta) debe obtener la tasa de cambio actual entre dos monedas desde una API externa. El ejemplo usa una URL ficticia. Debes reemplazarla por una API real como exchangerate.host o similar. La funciรณn intenta manejar errores de conexiรณn y errores al procesar la respuesta de la API. Es crucial adaptar el cรณdigo dentro del bloquetry
para que coincida con el formato de la respuesta de la API que elijas.convertir_moneda(cantidad, moneda_origen, moneda_destino)
:
Esta funciรณn toma una cantidad y las monedas de origen y destino, y utilizaobtener_tasa_cambio
para calcular la conversiรณn.main()
:
Esta funciรณn es el punto de entrada del programa. Solicita al usuario las monedas y la cantidad a convertir, llama aconvertir_moneda
y muestra el resultado. Incluye manejo de errores para la entrada del usuario (asegurรกndose de que la cantidad sea un nรบmero vรกlido).if __name__ == "__main__":
:
Asegura que la funciรณnmain()
se ejecute solo cuando el script se ejecuta directamente (no cuando se importa como un mรณdulo).
Consideraciones Importantes:
- API Key: Muchas APIs de tasas de cambio requieren una API key. Asegรบrate de obtener una y agregarla en la solicitud a la API.
- Manejo de Errores: El cรณdigo incluye manejo bรกsico de errores, pero se puede mejorar. Por ejemplo, podrรญas aรฑadir reintentos en caso de fallos temporales de la red.
- Validaciรณn de Entrada: Se valida que la cantidad sea un nรบmero, pero se podrรญa validar tambiรฉn que las monedas sean cรณdigos vรกlidos (ej: de una lista predefinida).
- Gratuidad de APIs: Ten en cuenta que muchas APIs de tasas de cambio gratuitas tienen limitaciones en el nรบmero de solicitudes por minuto o por dรญa.
Indice de la guia de proyectos
Proyecto anterior