1 taborok=[]2 3 def F1():4 fbe=open('taborok.txt','r')5 for sor in fbe:6 sor=sor.strip().split()7 sor[:4]=map(int,sor[:4]) # első 4 elem legyen egész szám8 taborok.append(sor)9 fbe.close()10 11 def F2():12 print('2. feladat')13 print(f'Az adatsorok száma: {len(taborok)}') # 2814 print(f'Az először rögzített tábor témája : {taborok[0][-1]}') # foci15 print(f'Az utoljára rögzített tábor témája: {taborok[-1][-1]}') # filmes16 17 def F3():18 print('3. feladat')19 van=False20 for tabor in taborok:21 if tabor[-1]=='zenei': # -1, mint index, egy lista utolsó elemét jelöli22 print(f'Zenei tábor kezdődik {tabor[0]}. hó {tabor[1]}. napján.')23 van=True24 if not van:25 print('Nem volt zenei tábor.')26 27 def F4():28 print('4. feladat')29 maximum=0 # maximális az érdeklődés, ahol a diákok betűjeléből30 # alkotott szöveg a leghosszabb31 for tabor in taborok:32 if len(tabor[4])>maximum:33 maximum=len(tabor[4])34 print('Legnépszerűbbek:')35 for tabor in taborok:36 if len(tabor[4])==maximum:37 print(tabor[0],tabor[1],tabor[-1])38 39 def sorszam(h,n):40 # A nyári szünet első napja 6. hó 16.41 # A nyári szünet 77. napja 8. hó 31.42 # (A nyári hónapok rendre 30, 31, 31 naposak.)43 napok=044 match h:45 case 6: napok+=(n-15) # júniusban 15 nap nem nyári szünet46 case 7: napok+=15+n # július esetén: júniusban 15 nap szünet + a megadott nap47 case 8: napok+=46+n # augusztus esetén: 15 júniusi nap + 31 júliusi nap + a megadott nap48 return napok49 50 def F6():51 print('6. feladat')52 honap=int(input('hó: ')) # 853 nap=int(input('nap: ')) # 154 s=sorszam(honap,nap) # a megadott dátum sorszáma55 db=056 for tabor in taborok:57 k=sorszam(tabor[0],tabor[1]) # egy adott tábor kezdőnapjának sorszáma58 v=sorszam(tabor[2],tabor[3]) # egy adott tábor befejező napjának sorszáma59 if k<=s<=v:60 db+=161 print(f'Ekkor éppen {db} tábor tart.') # 362 63 def F7():64 print('7. feladat')65 tanulo=input('Adja meg egy tanuló betűjelét: ') # L66 erdeklodes=[]67 for tabor in taborok:68 if tanulo in tabor[4]:69 erdeklodes.append(tabor[0:4]+tabor[-1:]) # [-1:] csak azért, hogy az70 # utolsó elemet listaként kezelje71 # a program. Így két listát adok össze,72 # aminek az eredménye egy lista73 erdeklodes=sorted(erdeklodes)74 fki=open('egytanulo.txt','w')75 for t in erdeklodes:76 print(f'{t[0]}.{t[1]}-{t[2]}.{t[3]} {t[4]}',file=fki)77 fki.close()78 # rendezettség miatt elég az "előző" tábor végét az "aktuális" elejéhez hasonlítani:79 utkozes=False80 for i in range(1,len(erdeklodes)):81 elozo=erdeklodes[i-1] # ezért indul a "range" 1-től82 aktualis=erdeklodes[i]83 if sorszam(elozo[2],elozo[3])>=sorszam(aktualis[0],aktualis[1]):84 utkozes=True85 break # a feladat nem kéri, hogy keressük meg az ütközést okozó táborokat86 if utkozes:87 print('Nem mehet el mindegyik táborba.')88 89 # --------------------------------------------------------------------------------- 90 F1()91 F2()92 F3()93 F4()94 95 F6()96 F7()97 98