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