# Mozi foglalás kezelés
# YT: https://www.youtube.com/watch?v=slXrGwHR808
# Kategória: szótárak
# Az előadások adatai: minden előadás neve, időpontja, helyfoglalási rendszere, jegyára és eddigi bevétele
eloadasok = {
"Star Wars (14:00)": { # Az első előadás neve és időpontja
"helyek": { # A foglalható helyek: három sor (A, B, C) és öt szék soronként
"A": [False] * 5, # Minden hely alapértelmezetten szabad (False)
"B": [False] * 5,
"C": [False] * 5
},
"ar": 1500, # Jegyár forintban
"bevetel": 0 # Az előadás eddigi bevétele
},
"Batman (16:30)": { # A második előadás neve és időpontja
"helyek": { # A foglalható helyek ugyanúgy három sor és öt szék
"A": [False] * 5,
"B": [False] * 5,
"C": [False] * 5
},
"ar": 1500, # Jegyár forintban
"bevetel": 0 # Az előadás eddigi bevétele
}
}
# Az előadás helyfoglalási állapotának megjelenítése
def helyek_mutatasa(eloadas):
print("\nHelyek (O = szabad, X = foglalt):") # Helyek jelölése: O = szabad, X = foglalt
print(" 1 2 3 4 5") # Az oszlopok sorszámai
for sor in eloadas["helyek"]: # Végigmegyünk minden soron (A, B, C)
print(sor, end=" ") # A sor nevét kiírjuk
for foglalt in eloadas["helyek"][sor]: # Ellenőrizzük minden szék foglaltságát
print("X" if foglalt else "O", end=" ") # Foglalt helyek: X, szabad helyek: O
print() # Sor végén új sort kezdünk
# Helyfoglalás egy előadáshoz
def hely_foglalas(eloadas):
sor = input("Sor: ") # Kérjük be a foglalni kívánt sor nevét (pl. A, B, C)
szek = int(input("Szék: ")) - 1 # Kérjük be a szék számát (1-től 5-ig), de 0-indexelté alakítjuk
# Ellenőrizzük, hogy a választott hely szabad-e
if not eloadas["helyek"][sor][szek]:
eloadas["helyek"][sor][szek] = True # A hely foglaltságát True-ra állítjuk
eloadas["bevetel"] += eloadas["ar"] # Hozzáadjuk a jegy árát az előadás bevételéhez
print("Foglalás sikeres!") # Sikeres foglalás visszajelzése
print(f"Ár: {eloadas['ar']} Ft") # A jegy árának kiírása
else:
print("Ez a hely már foglalt!") # Ha a hely már foglalt, figyelmeztetés jelenik meg
# Végtelen ciklus a felhasználói interakciókhoz
while True:
print("\nElőadások:") # Előadások listája
for i, cim in enumerate(eloadasok.keys(), 1): # Az előadásokat sorszámozzuk 1-től kezdve
print(f"{i}. {cim}") # Az előadás sorszáma és neve
print(f"{len(eloadasok) + 1}. Kilépés") # Kilépési opció hozzáadása a listához
valasztas = int(input("\nVálasztott előadás: ")) # A felhasználó választása sorszám alapján
if valasztas == len(eloadasok) + 1: # Ha a választás a kilépés opció (utolsó lehetőség)
break # Kilépés a ciklusból
eloadas = list(eloadasok.values())[valasztas - 1] # A választott előadás adatai
helyek_mutatasa(eloadas) # Az előadás helyfoglalási állapotának megjelenítése
hely_foglalas(eloadas) # Helyfoglalás az előadáshoz
print(f"Eddigi bevétel: {eloadas['bevetel']} Ft") # Az előadás eddigi bevételének kiírása