1 def kiir(ssz, szoveg): 2 print('{}. feladat - {}'.format(ssz, szoveg)) 3 4 5 # Az egyszerűbb indexelés miatt egy plusz 0! Ne kelljen -1 mindig! :) 6 arak = [0, 5000, 4000, 3000, 2000, 1500] 7 8 # --------------------------------------------------------------------------------- 9 # 1. Olvassa be és tárolja el a foglaltsag.txt és a kategoria.txt fájl adatait! 10 # --------------------------------------------------------------------------------- 11 kiir(1, 'Adatok beolvasása') 12 13 # 15 sor és minden sorban 20 szék 14 foglaltsag = [] 15 kategoria = [] 16 17 fv = open('foglaltsag.txt', 'r') 18 for sor in fv: 19 foglaltsag.append(sor.rstrip()) 20 fv.close() 21 22 fv = open('kategoria.txt', 'r') 23 for sor in fv: 24 kategoria.append(sor.rstrip()) 25 fv.close() 26 27 print(foglaltsag) 28 print(kategoria) 29 30 # --------------------------------------------------------------------------------- 31 # 2. Kérje be a felhasználótól egy sor, és azon belül egy szék számát, majd írassa 32 # ki a képernyőre, hogy az adott hely még szabad-e vagy már foglalt! 33 # --------------------------------------------------------------------------------- 34 kiir(2, 'Szabad vagy foglalt') 35 36 sor = int(input('Kérek egy sor számát: ')) - 1 37 szek = int(input('Soron belül egy szék számát: ')) - 1 38 # -1 kell az indexelés miatt a fenti sorokban 39 if foglaltsag[sor][szek] == 'x': 40 print('A hely már foglalt!') 41 42 else: 43 print('A hely még szabad!') 44 45 # --------------------------------------------------------------------------------- 46 # 3. Határozza meg, hogy hány jegyet adtak el eddig, és ez a nézőtér befogadó- 47 # képességének hány százaléka! A százalékértéket kerekítse egészre, és az 48 # eredményt a következő formában írassa ki a képernyőre: 49 # Például: 50 # Az előadásra eddig 156 jegyet adtak el, ez a nézőtér 42%-a. 51 # --------------------------------------------------------------------------------- 52 kiir(3, 'Eladott jegyekről információ') 53 54 bk = 15 * 20 # nézőtér befogadóképessége 55 56 eladott = 0 57 for sor in foglaltsag: 58 eladott += sor.count('x') 59 60 s = 'Az előadásra eddig {} jegyet adtak el, ez a nézőtér {}%-a.' 61 print(s.format(eladott, int(eladott / bk * 100 + 0.5))) 62 63 # --------------------------------------------------------------------------------- 64 # 4. Határozza meg, hogy melyik árkategóriában adták el a legtöbb jegyet! 65 # Az eredményt írassa ki a képernyőre az alábbi formában: 66 # Például: 67 # A legtöbb jegyet a(z) 3. árkategóriában értékesítették. 68 # --------------------------------------------------------------------------------- 69 kiir(4, 'Legnépszerűbb árkategória') 70 kat = [0] * 6 # 5 kategória van, ebben a listában összegezzük a kategóriákat 71 # +1 azért kell, hogy az indexelés egyszerűbb legyen 72 # maguk a kategóriák fogják indexelni 73 74 # itt ki lehet használni, hogy a foglaltsag és a kategoria teljesen azonos 75 # szerkezetű: ha foglaltsag adott helyen x van, ugyanott megnézzük a kategóriát! 76 for i in range(15): # 15 sor 77 for j in range(20): # soronként 20 szék 78 if foglaltsag[i][j] == 'x': 79 kat[int(kategoria[i][j])] += 1 80 81 # for x in range(1,6): 82 # print(kat[x]) 83 84 s = 'A legtöbb jegyet a(z) {}. kategóriában adták el.' 85 print(s.format(kat.index(max(kat)))) 86 87 # --------------------------------------------------------------------------------- 88 # 5. A jegyek árát kategóriánként a következő táblázat tartalmazza: 89 # árkategória 1 2 3 4 5 90 # ár (Ft) 5000 4000 3000 2000 1500 91 # Mennyi lenne a színház bevétele a pillanatnyilag eladott jegyek alapján? 92 # Írassa ki az eredményt a képernyőre! 93 # --------------------------------------------------------------------------------- 94 kiir(5, 'Színház bevétele') 95 96 # kicsit hasonló, mint a 4. feladat: foglaltsagon végig megyünk, és ha adott helyen 97 # x karakter van, akkor ugyanott a kategória alapján megnézzük a szék árát, és 98 # az egészet összegezzük a bevetel változóban! 99 bevetel = 0 100 for i in range(15): # 15 sor 101 for j in range(20): # soronként 20 szék 102 if foglaltsag[i][j] == 'x': 103 bevetel += arak[int(kategoria[i][j])] 104 105 print('A színház bevétele {} Ft.'.format(bevetel)) 106 107 # vagy (a 4. feladatot felhasználva): 108 109 bevetel2 = 0 110 for i in range(6): 111 bevetel2 += arak[i] * kat[i] 112 113 print('A színház bevétele {} Ft.'.format(bevetel2)) 114 # --------------------------------------------------------------------------------- 115 # 6. Mivel az emberek általában nem egyedül mennek színházba, ha egy üres hely 116 # mellett nincs egy másik üres hely is, akkor azt nehezebben lehet értékesíteni. 117 # Határozza meg, és írassa ki a képernyőre, hogy hány ilyen „egyedülálló” üres 118 # hely van a nézőtéren! 119 # --------------------------------------------------------------------------------- 120 kiir(6, '"Egyedülálló" szabad helyek') 121 122 ures = 0 123 for sor in foglaltsag: 124 sor2 = 'x' + sor + 'x' # a plusz 'x'-ek azért, hogy az elejét és végét ne kelljen 125 # külön vizsgálgatni 126 for i in range(1, 21): # a plusz 'x'-kel 22 elemű a sor2, és számoljuk az 127 # 'xox' eseteket! 128 if sor2[i - 1] == 'x' and sor2[i] == 'o' and sor2[i + 1] == 'x': 129 ures += 1 130 131 print('"Egyedülálló" szabad helyek száma: ', ures) 132 133 # --------------------------------------------------------------------------------- 134 # 7. A színház elektronikus eladási rendszere az érdeklődőknek az üres helyek 135 # esetén a hely árkategóriáját jeleníti meg, míg a foglalt helyeket csak egy 136 # „x” karakterrel jelzi. Készítse el ennek megfelelően a fenti adatokat 137 # tartalmazó szabad.txt fájlt! 138 # Például: 139 # 33xxx1x1x1x1xxx22xxx 140 # xxxxxxxxxxxxxxxxxxxx 141 # 4xxxxx222xxxxxxxxxx4 142 # … 143 # --------------------------------------------------------------------------------- 144 kiir(7, 'Szabad helyek árkategóriája') 145 146 fv = open('szabad.txt', 'w') 147 148 szabad = ['x'] * 20 # 20 elemű 'x'-ekből álló lista 149 szabad = ''.join(szabad) # ebből 20 karakter hosszú string: 'xxxx....' 150 szabadok = [szabad] * 15 # ezekből a sztringekből 15 sornak megfelelő lista 151 for i in range(15): # 15 sor 152 for j in range(20): # 20 szék soronként 153 if foglaltsag[i][j] == 'o': # ha szabad a szék, akkor 154 # az i-edik sorban a j-edik helyen 'x' helyett a kategória lesz!! 155 # j-edik karakterig marad minden, j helyen csere, j+1-től marad minden!! 156 szabadok[i] = szabadok[i][:j] + kategoria[i][j] + szabadok[i][j + 1:] 157 fv = open('szabad.txt', 'w') 158 for szabad in szabadok: 159 print(szabad, file=fv) 160 fv.close()