Egy komplex Python program több programozási koncepció (objektum-orientáltság, fájlkezelés, API integráció és hibakezelés) kombinációja.Az alábbi példa egy valós idejű valutaárfolyam-lekérdező és -átváltó alkalmazás, amely egy külső webszervertől (pl. ExchangeRate-API) kéri le az adatokat, kezeli az esetleges hálózati hibákat, és logolja a tranzakciókat egy szöveges fájlba.
---------
from datetime import datetime
import os
import requests
class ValutaKalkulator:
def __init__(self, api_key):
self.api_key = api_key
self.base_url = (
f"https://exchangerate-api.com{self.api_key}/latest/"
)
def arfolyam_lekeres(self, valuta):
"""Lekérdezi az aktuális árfolyamokat a megadott alapvalutához."""
try:
url = f"{self.base_url}{valuta}"
valasz = requests.get(url)
valasz.raise_for_status() # Hibakezelés (pl. 404 vagy 500 esetén)
adat = valasz.json()
return adat["conversion_rates"]
except requests.exceptions.RequestException as e:
print(f"\nHiba történt a hálózati kapcsolat során: {e}")
return None
except KeyError:
print("\nHiba: Az API válasz nem tartalmazza az árfolyamokat.")
return None
def penzvaltas(self, osszeg, honnan, hova):
"""Kiszámolja az átváltott összeget és logolja azt."""
print(f"Adatok lekérése a(z) {honnan} valutáról...")
arfolyamok = self.arfolyam_lekeres(honnan)
if arfolyamok and hova in arfolyamok:
arfolyam = arfolyamok[hova]
valtott_osszeg = osszeg * arfolyam
# Eredmény formázása matematikailag megfelelő kerekítéssel ($2$ tizedesjegyre)
eredmeny = round(valtott_osszeg, 2)
# Tranzakció logolása fájlba
self.tranzakcio_mentese(osszeg, honnan, eredmeny, hova, arfolyam)
return eredmeny
else:
print(f"A(z) {hova} valuta nem található az árfolyamlistában.")
return None
def tranzakcio_mentese(
self, osszeg, honnan, valtott_osszeg, hova, arfolyam
):
"""Privát metódus a tranzakciók fájlba írásához."""
fajl_nev = "tranzakciok.txt"
idopont = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
with open(fajl_nev, "a", encoding="utf-8") as f:
f.write(
f"{idopont} - {osszeg} {honnan} átváltva {valtott_osszeg} {hova} értékre (Árfolyam: {arfolyam})\n"
)
# Főprogram
if __name__ == "__main__":
API_KULCS = "IDE_IRJA_AZ_API_KULCSAT" # Helyettesítse be a saját kulcsával
# Példa futtatás
kalkulator = ValutaKalkulator(api_key=API_KULCS)
try:
osszeg_input = float(input("Kérem adja meg az átváltani kívánt összeget: "))
honnan_input = input("Melyik valutából vált (pl. EUR): ").upper()
hova_input = input("Melyik valutába vált (pl. HUF): ").upper()
eredmeny = kalkulator.penzvaltas(
osszeg_input, honnan_input, hova_input
)
if eredmeny is not None:
print(
f"\nEredmény: {osszeg_input} {honnan_input} = {eredmeny} {hova_input}"
)
print("A tranzakció sikeresen mentve a 'tranzakciok.txt' fájlba.")
except ValueError:
print("Hiba: Kérjük, hogy az összegnél számot adjon meg.")
--------------
Kérem adja meg az átváltani kívánt összeget: 100
Melyik valutából vált (pl. EUR): EUR
Melyik valutába vált (pl. HUF): HUF
Adatok lekérése a(z) EUR valutáról...
Eredmény: 100.0 EUR = 38975.0 HUF
A tranzakció sikeresen mentve a 'tranzakciok.txt' fájlba.
Nincsenek megjegyzések:
Megjegyzés küldése