1 # ----------------------------------------------------------------------- 2 # 1. feladat: Olvassa be és tárolja el az ajto.txt fájl tartalmát! 3 # ----------------------------------------------------------------------- 4 # Egy "MÁTRIX"-ban tároljuk az adatokat úgy, hogy a mátrix 5 # minden sora egy a fájl soraiból képzett "kis" lista lesz! 6 # Azaz: lista a listában, így lesz ez egy "MÁTRIX"! 7 8 adatok = [] # adatok - ez a "MÁTRIX" 9 print('1. feladat - fájlbeolvasás') 10 fv = open('ajto.txt', 'r') 11 for sor in fv: 12 sor = sor.strip().split() # "kis" listát készítünk a fájl soraiból 13 adatok.append(sor) # "kis" lista, mint a mátrix egy eleme 14 fv.close() 15 16 # print(adatok) # csak, ha látni akarod a beolvasott adatokat! 17 18 # A társalgóba be- és kilépéseket azok sorrendjében tartalmazza az állomány, 19 # még akkor is, ha a perc pontossággal rögzített adatok alapján 20 # egyezőség áll fenn. 21 # ----------------------------------------------------------------------- 22 # 2. feladat: Ki az első belépő, ki az utolsó kilépő? 23 # ----------------------------------------------------------------------- 24 print('2. feladat - első utolsó') 25 print('\tElső belépő: ', adatok[0][2]) # A feladatleírás alapján, lsd. feljebb 26 27 # Az adatok végéről keressük az első, tehát utolsó "ki" értéket 28 index = len(adatok) - 1 29 while adatok[index][3] != 'ki': 30 index -= 1 # visszafelé lépkedünk 31 32 print('\tUtolsó kilépő: ', adatok[index][2]) 33 34 # ----------------------------------------------------------------------- 35 # 3. feladat: Határozza meg a fájlban szereplő személyek közül, 36 # ki hányszor haladt át a társalgó ajtaján! A meghatározott 37 # értékeket azonosító szerint növekvő sorrendben írja az 38 # athaladas.txt fájlba! Soronként egy személy azonosítója, 39 # és tőle egy szóközzel elválasztva az áthaladások száma szerepeljen! 40 # ----------------------------------------------------------------------- 41 print('3. feladat - számlálás, eredmények kiírása fájlba') 42 43 fv = open('athaladas.txt', 'w') 44 45 temp = [0] * 100 46 # temp=[0]*100 - Ebben az "átmeneti" listában számoljuk a ki-, belépőket. 47 # Feltöltjük nullákkal, előkészítve az összegzést! 48 # Maximum 100 azonosító (színész) lehet. 49 50 for elem in adatok: 51 temp[int(elem[2]) - 1] += 1 52 53 for index in range(0, 100): 54 if temp[index] != 0: 55 ki = str(index + 1) + ' ' + str(temp[index]) + '\n' 56 fv.write(ki) 57 58 fv.close() 59 60 # ----------------------------------------------------------------------- 61 # 4. feladat: azon személyek azonosítója, akik a vizsgált időszak végén 62 # a társalgóban tartózkodtak 63 # ----------------------------------------------------------------------- 64 print('4. feladat - bentmaradók listája') 65 print('\tTársalgóban maradtak: ', end=' ') 66 67 for index in range(0, 100): 68 if temp[index] % 2 == 1: 69 print(index + 1, end=' ') 70 71 # ----------------------------------------------------------------------- 72 # 5. feladat: mikor voltak a legtöbben a társalgóban 73 # ----------------------------------------------------------------------- 74 print('\n5. feladat - egyszerre legtöbben a társalgóban') 75 maxi = [0, ' ', ' '] # létszám, óra, perc 76 bentvannak = 1 # az első ember csak 'be' lehetett 77 # ismétlődés a második adattól indul 78 for index in range(1, len(adatok)): 79 80 if adatok[index][3] == 'be': # 3. indexen a be/ki irány van 81 bentvannak += 1 82 else: 83 bentvannak -= 1 84 85 if bentvannak > maxi[0]: 86 maxi[0] = bentvannak # folyamatosan átértékelődik 87 maxi[1] = adatok[index][0] # óra 88 maxi[2] = adatok[index][1] # perc 89 90 print('\t' + maxi[1] + ':' + maxi[2] + '-kor voltak a legtöbben a társalgóban (' + str(maxi[0]) + ')') 91 92 # ----------------------------------------------------------------------- 93 # 6. feladat: Kérje be a felhasználótól egy személy azonosítóját! 94 # ----------------------------------------------------------------------- 95 print('6. feladat - azonosító megadása') 96 az = input('\tAdja meg a személy azonosítóját! ') 97 98 # ----------------------------------------------------------------------- 99 # 7. feladat: a beolvasott azonosítóhoz tartozó személy mettől meddig 100 # tartózkodott a társalgóban 101 # ----------------------------------------------------------------------- 102 # ----------------------------------------------------------------------- 103 # 8. feladat: a beolvasott azonosítójú személy összesen 104 # hány percet töltött a társalgóban 105 # ----------------------------------------------------------------------- 106 # A 7. és 8. feladatot egy menetben oldjuk meg!! 107 108 print('7. feladat - adott személy be-ki időpontjai') 109 110 111 def percben(óra, perc): 112 return óra * 60 + perc 113 114 115 ido, e, v = 0, 0, 0 # benttartózkodás ideje, aktuális bentlét eleje és vége 116 for elem in adatok: 117 if elem[2] == az: # ha a mi emberünkről van szó, akkor... 118 if elem[3] == 'be': # ha bemegy, akkor... 119 print('\t' + elem[0] + ':' + elem[1] + '-', end='') 120 e = percben(int(elem[0]), int(elem[1])) # ...ez a eleje időpont 121 else: # egyébként kijön... 122 print(elem[0] + ':' + elem[1]) 123 v = percben(int(elem[0]), int(elem[1])) # ...ez a vége időpont 124 if v != 0: # ha kijött, akkor... 125 ido += (v - e) # a bent eltelt időt számoljuk 126 e, v = 0, 0 # eleje és vége nullázódik, a következő be-ki vizsgálat számára 127 128 if v == 0: # ha v==0, akkor nem jött ki a társalgóból 129 ido += (percben(15, 0) - e) # ha nem jött ki, akkor a bent eltöltött időhöz hozzáadjuk, amennyi 15 óráig még eltelt 130 szöveg = 'a társalgóban volt' 131 else: 132 szöveg = 'nem volt a társalgóban' 133 134 print('\n8. feladat - adott személy mennyit volt a társalgóban') 135 print('\tA(z) %d. személy összesen %d percet volt bent, a megfigyelés végén %s.\n' % (int(az), ido, szöveg))