1 def kiir(ssz, szoveg): 2 print('{}. feladat {}'.format(ssz, szoveg)) 3 4 5 # -------------------------------------------------------------- 6 # 1. Olvassa be és tárolja el a penztar.txt fájl tartalmát! 7 # -------------------------------------------------------------- 8 kiir(1, '--------------------') 9 print('...') 10 fv = open('penztar.txt', 'r') 11 vasarlasok = [] # mátrix, elemei: 20 elemű listák 12 termekek = ['{'] * 20 # maximum 20 terméket vehet valaki 13 F_db = 0 # F-ek száma 14 i = 0 # termekek lista indexeléséhez 15 aru = set() # 4. feladathoz lesz, de igazából nem kell 16 for sor in fv: 17 sor = sor.rstrip() 18 19 if sor != 'F': 20 aru.add(sor) 21 termekek[i] = sor 22 i += 1 23 else: 24 F_db += 1 25 termekek = sorted(termekek) 26 vasarlasok.append(termekek) 27 termekek = ['{'] * 20 # következő vásárló előkészítése 28 i = 0 # termekek lista indexelése előlről 29 fv.close() 30 # print(vasarlasok) 31 32 # -------------------------------------------------------------- 33 # 2. Határozza meg, hogy hányszor fizettek a pénztárnál! 34 # -------------------------------------------------------------- 35 kiir(2, '--------------------') 36 37 print('A fizetések száma:', F_db) 38 39 # -------------------------------------------------------------- 40 # 3. Írja a képernyőre, hogy az első vásárlónak hány darab 41 # árucikk volt a kosarában! 42 # -------------------------------------------------------------- 43 kiir(3, '--------------------') 44 45 db = 20 - vasarlasok[0].count('{') 46 print('Az első vásárló %d darab árucikket vásárolt.' % db) 47 48 # -------------------------------------------------------------- 49 # 4. Kérje be a felhasználótól egy vásárlás sorszámát, egy 50 # árucikk nevét és egy darabszámot! A következő három 51 # feladat megoldásánál ezeket használja fel! 52 # -------------------------------------------------------------- 53 kiir(4, '--------------------') 54 55 # vsz - vásárlás sorszáma 56 # aru_neve - a vizsgálandó termék megnevezése 57 # vdb - a termékből vásárolt mennyiség, darabszám 58 59 # ez a sok hűhó a következő ciklusokban csak "balhéból"! 60 while True: 61 try: 62 vsz = int(input('Adja meg egy vásárlás sorszámát! ')) 63 if vsz < 1 or vsz > len(vasarlasok): 64 print('1-{} közötti számot kérek!'.format(len(vasarlasok))) 65 else: 66 break 67 except ValueError: 68 print('Csalódtam benned!') 69 70 while True: 71 aru_neve = (input('Adja meg egy árucikk nevét! ')) 72 if aru_neve not in aru: 73 print('Ilyen árut nem vásároltak') 74 else: 75 break 76 77 while True: 78 try: 79 vdb = int(input('Adja meg a vásárolt darabszámot! ')) 80 if vdb < 1 or vdb > 20: 81 print('1-20 közötti számot kérek!') 82 else: 83 break 84 except ValueError: 85 print('És ismét csak csalódtam benned!') 86 87 # -------------------------------------------------------------- 88 # 5. Határozza meg, hogy a bekért árucikkből 89 # a. melyik vásárláskor vettek először, és melyiknél utoljára! 90 # b. összesen hány alkalommal vásároltak! 91 # -------------------------------------------------------------- 92 kiir(5, '--------------------') 93 94 eloszor = 0 95 utoljara = 0 96 v_alkalom = 0 # adott termékből hányszor vásároltak, nem mennyit 97 for i in range(len(vasarlasok)): 98 if vasarlasok[i].count(aru_neve) > 0: 99 utoljara = i 100 if eloszor == 0: 101 eloszor = i 102 v_alkalom += 1 103 104 print('Az első vásárlás sorszáma: ', eloszor + 1) 105 print('Az utolsó vásárlás sorszáma: ', utoljara + 1) 106 print('%d vásárlás során vettek belőle.' % v_alkalom) 107 108 # -------------------------------------------------------------- 109 # 6. Határozza meg, hogy a bekért darabszámot vásárolva egy 110 # termékből mennyi a fizetendő összeg! A feladat megoldásához 111 # készítsen függvényt ertek néven, amely a darabszámhoz 112 # a fizetendő összeget rendeli! 113 # -------------------------------------------------------------- 114 kiir(6, '--------------------') 115 116 117 def ertek(db): 118 arak = [500, 450, 400] 119 if db > 1: 120 return arak[0] + arak[1] + (db - 2) * arak[2] 121 else: 122 return arak[0] 123 124 125 print('%d darab vételekor fizetendő: %d' % (vdb, ertek(vdb))) 126 127 # -------------------------------------------------------------- 128 # 7. Határozza meg, hogy a bekért sorszámú vásárláskor mely 129 # árucikkekből és milyen mennyiségben vásároltak! 130 # Az árucikkek nevét tetszőleges sorrendben megjelenítheti. 131 # -------------------------------------------------------------- 132 kiir(7, '--------------------') 133 134 135 def vizsgalat78(index, iras): # 7. és 8. feladathoz 136 vizsg = vasarlasok[index] # vasarlasok lista adott eleme 137 osszeg = 0 # összegzéshez 138 db = 1 # miből mennyit vett megállapításához 139 i = 1 # egy adott vásárlason belüli indexeléshez 140 while vizsg[i - 1] != '{': 141 if vizsg[i] == vizsg[i - 1]: # ha aktuális aru azonos előzővel 142 db += 1 # db-ot növelni kell 143 else: 144 if iras: # ha eltérő aru név jön, akkor 145 print(db, vizsg[i - 1]) # kiirjuk az adatokat, ha kell 146 osszeg += ertek(db) # összesen fizetendőt számoljuk 147 db = 1 # db-ot visszaállítjuk 1-re 148 i += 1 # indexet továbbvisszük 149 return osszeg 150 151 152 vizsgalat78(vsz - 1, True) 153 154 # -------------------------------------------------------------- 155 # 8. Készítse el az osszeg.txt fájlt, amelybe soronként az 156 # egy-egy vásárlás alkalmával fizetendő összeg kerüljön 157 # a kimeneti mintának megfelelően! 158 # -------------------------------------------------------------- 159 kiir(8, '--------------------') 160 print('...') 161 162 fki = open('osszeg.txt', 'w') 163 for i in range(len(vasarlasok)): 164 print('%d: %d' % (i + 1, vizsgalat78(i, False)), file=fki) 165 fki.close() 166