Az alábbiakban egy olyan recept- és hozzávalókezelő rendszert láthatsz, amely objektumokat használ, kezeli az adatok mentését (JSON formátumban), és szűri a recepteket.
--------------
import json
import os
class Hozzavalo:
"""Egyetlen hozzávalót reprezentáló osztály."""
def __init__(self, nev: str, mennyiseg: str):
self.nev = nev
self.mennyiseg = mennyiseg
def __str__(self):
return f"{self.nev} - {self.mennyiseg}"
class Recept:
"""Egy receptet és a hozzá tartozó logikát leíró osztály."""
def __init__(self, nev: str, elkeszitesi_ido: int):
self.nev = nev
self.elkeszitesi_ido = elkeszitesi_ido # percben
self.hozzavalok = []
def hozzaad_hozzavalo(self, hozavalo: Hozzavalo):
self.hozzavalok.append(hozavalo)
def __str__(self):
hozzavalok_lista = "\n ".join(str(h) for h in self.hozzavalok)
return f"Recept: {self.nev} ({self.elkeszitesi_ido} perc)\nHozzávalók:\n {hozzavalok_lista}"
class ReceptKonyv:
"""A recepteket kezelő és fájlba mentő/betöltő osztály."""
def __init__(self, fajl_nev: str = "receptek.json"):
self.fajl_nev = fajl_nev
self.receptek = []
def hozzaad_recept(self, recept: Recept):
self.receptek.append(recept)
def kereses_ido_alapjan(self, max_perc: int) -> list:
"""Visszaadja azokat a recepteket, amelyek elkészítése nem vesz igénybe több időt."""
return [r for r in self.receptek if r.elkeszitesi_ido <= max_perc]
def mentes_json(self):
"""Elmenti a recepteket egy JSON fájlba."""
adatok = []
for r in self.receptek:
hozzavalok_dict = [{"nev": h.nev, "mennyiseg": h.mennyiseg} for h in r.hozzavalok]
adatok.append({
"nev": r.nev,
"elkeszitesi_ido": r.elkeszitesi_ido,
"hozzavalok": hozzavalok_dict
})
with open(self.fajl_nev, "w", encoding="utf-8") as f:
json.dump(adatok, f, ensure_ascii=False, indent=4)
print("Receptek sikeresen mentve!")
def betoltes_json(self):
"""Betölti a recepteket a JSON fájlból."""
if not os.path.exists(self.fajl_nev):
print("A mentési fájl nem található.")
return
try:
with open(self.fajl_nev, "r", encoding="utf-8") as f:
adatok = json.load(f)
self.receptek = []
for elem in adatok:
recept = Recept(elem["nev"], elem["elkeszitesi_ido"])
for h in elem["hozzavalok"]:
recept.hozzaad_hozzavalo(Hozzavalo(h["nev"], h["mennyiseg"]))
self.receptek.append(recept)
print("Receptek sikeresen betöltve!")
except json.JSONDecodeError:
print("Hiba történt: A mentési fájl sérült.")
# --- A program futtatása ---
if __name__ == "__main__":
konyv = ReceptKonyv()
# Új recept létrehozása és feltöltése
recept1 = Recept("Paradicsomleves", 25)
recept1.hozzaad_hozzavalo(Hozzavalo("Paradicsomlé", "1 liter"))
recept1.hozzaad_hozzavalo(Hozzavalo("Cukor", "2 evőkanál"))
recept1.hozzaad_hozzavalo(Hozzavalo("Só", "1 csipet"))
recept2 = Recept("Rántotta", 10)
recept2.hozzaad_hozzavalo(Hozzavalo("Tojás", "3 db"))
recept2.hozzaad_hozzavalo(Hozzavalo("Vaj", "1 dkg"))
konyv.hozzaad_recept(recept1)
konyv.hozzaad_recept(recept2)
# Receptek mentése
konyv.mentes_json()
# Keresés 15 percnél rövidebb receptekre
print("\nGyors receptek (max 15 perc):")
gyors_receptek = konyv.kereses_ido_alapjan(15)
for r in gyors_receptek:
print("-", r.nev)
--------------
Receptek sikeresen mentve!
Gyors receptek (max 15 perc):
- Rántotta
Nincsenek megjegyzések:
Megjegyzés küldése