tarsalgo201805.py
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))