fogado201805idny.py
1    adatok=[]
2    nevek=set() #3. feladatban lesz szerepe
3    
4    def F1():
5        print('1. feladat - adatok beolvasása')
6        fbe=open('fogado.txt','r')
7        
8        oragyujto=set()                 #ebbe a halmazba fogom dobálni az időket
9        for sor in fbe:
10           sor=sor.strip().split()
11           adatok.append(sor)
12           nevek.add(sor[0]+" "+sor[1])
13           oragyujto.add(sor[2])       #ebbe a halmazba dobálom az időket
14                                       #16:10,17:20, meg ilyeneket
15       global orak    
16       fbe.close()
17       orak=sorted(list(oragyujto))    #a halmazt rendezett listává alakítom
18                                       #['16:00','16:10',...,'17:50']
19   def F2():
20       print('2. feladat')
21       print('Foglalások száma: %d' %len(adatok))
22   
23   def F3():
24       print('3. feladat')
25       nev=input('Adjon meg egy nevet: ')
26       if nev not in nevek:
27           print('A megadott néven nincs időpontfoglalás.')
28       else:
29           szamlalo=0
30           for adat in adatok:
31               if adat[0]+" "+adat[1]==nev:
32                   szamlalo+=1
33           print('%s néven %d időpontfoglalás van.' %(nev,szamlalo))
34           
35   def F4():
36       print('4. feladat')
37       nevsor=[]
38       idopont=input('Adjon meg egy érvényes időpontot (pl. 17:10): ')
39       #kigyűjtöm a nevsor listába azokat a neveket, akiknél az adott időpont szerepel
40       for adat in adatok:
41           if adat[2]==idopont:
42               nevsor.append(adat[0]+" "+adat[1])  #vezetéknév és keresztnév együtt
43       nevsor=sorted(nevsor)
44       fajlnev=idopont[0:2]+idopont[3:5]+".txt"    #ajlnev ---> 16:30 ---> 1630.txt
45       fki=open(fajlnev,'w')
46       for nev in nevsor:
47           print(nev)      #képernyőre is kiírom, csak hogy lássam, egyébként nem kell
48           print(nev,file=fki)
49       fki.close()
50   
51   def F5():
52       print('5. feladat')
53       #a 3. indexen lévő adat a foglalás dátuma időpontja, eszerint rendezem az adatokat
54       adatok2=sorted(adatok,key=lambda adat: adat[3])
55       print('Tanár neve: ', adatok2[0][0]+" "+adatok2[0][1])
56       print('Foglalt időpont: ', adatok2[0][2])
57       print('Foglalás ideje: ', adatok2[0][3])
58   
59   def F6():
60       #időpontból indexet gyárt: pl.: 16:40 --- > 1000 percben ---> osztva 10
61       # ---> 100 ---> -96 = 4 (96--->16:00-hoz kapcsolódik)
62       def index(ido):
63           return (int(ido[:2])*60+int(ido[3:]))//10-96
64       
65       print('6. feladat')
66       nev='Fodor Zsuzsanna'
67       #nev csak azért, hogy tesztelhető legyen, itt simán Barna Eszterrel kell dolgozni,
68       #de így könnyen megnézhető a függvény más nevekkel is
69       idok=[0]*12        
70       for adat in adatok:
71           if adat[0]+' '+adat[1]==nev:
72               idok[index(adat[2])]=1  #itt készül az időpontból index!
73       
74       #kialakul az idok lista: 0 és 1-ek sorozata, 0 - szabad, 1- foglalt
75       for i,ido in enumerate(idok):
76           if ido==0:  #ha szabad, akkor
77               print(orak[i])  #kiírom a neki megfelelő indexen (i) lévő időpontot!
78       
79       print(nev+' legkorábban távozhat: ',end='')
80       #Megkeresem az utolsó foglalt ido indexét
81       i=len(orak)-1
82       while idok[i]==0:
83           i-=1
84       #ahhoz képest eggyel nagyobb az utolsó szabad idő indexe
85       i+=1
86       if i<=len(orak)-1:  #ha beleférek a 12 időpontba, akkor
87           print(orak[i])  #kiírom az adott időpontot
88       else:               #ha nem, akkor
89           print('18:00')  #18:00-kor mehet csak haza
90           
91   
92   #-------------------------------
93   F1()
94   F2()
95   F3()
96   F4()
97   F5()
98   F6()
99