utemez202305_dk.py
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ám
8            taborok.append(sor)
9        fbe.close()
10   
11   def F2():
12       print('2. feladat')
13       print(f'Az adatsorok száma: {len(taborok)}')    # 28
14       print(f'Az először rögzített tábor témája : {taborok[0][-1]}')  # foci
15       print(f'Az utoljára rögzített tábor témája: {taborok[-1][-1]}') # filmes
16   
17   def F3():
18       print('3. feladat')
19       van=False
20       for tabor in taborok:
21           if tabor[-1]=='zenei':      # -1, mint index, egy lista utolsó elemét jelöli
22               print(f'Zenei tábor kezdődik {tabor[0]}. hó {tabor[1]}. napján.')
23               van=True
24       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ől
30                               # alkotott szöveg a leghosszabb
31       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=0
44       match h:
45           case 6: napok+=(n-15)   # júniusban 15 nap nem nyári szünet
46           case 7: napok+=15+n     # július esetén: júniusban 15 nap szünet + a megadott nap
47           case 8: napok+=46+n     # augusztus esetén: 15 júniusi nap + 31 júliusi nap + a megadott nap
48       return napok
49   
50   def F6():
51       print('6. feladat')
52       honap=int(input('hó: '))        # 8
53       nap=int(input('nap: '))         # 1
54       s=sorszam(honap,nap)            # a megadott dátum sorszáma
55       db=0
56       for tabor in taborok:
57           k=sorszam(tabor[0],tabor[1])    # egy adott tábor kezdőnapjának sorszáma
58           v=sorszam(tabor[2],tabor[3])    # egy adott tábor befejező napjának sorszáma
59           if k<=s<=v:
60               db+=1
61       print(f'Ekkor éppen {db} tábor tart.')      # 3
62   
63   def F7():
64       print('7. feladat')
65       tanulo=input('Adja meg egy tanuló betűjelét: ')     # L
66       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 az
70                                                           # utolsó elemet listaként kezelje
71                                                           # a program. Így két listát adok össze,
72                                                           # aminek az eredménye egy lista
73       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=False
80       for i in range(1,len(erdeklodes)):
81           elozo=erdeklodes[i-1]       # ezért indul a "range" 1-től
82           aktualis=erdeklodes[i]
83           if sorszam(elozo[2],elozo[3])>=sorszam(aktualis[0],aktualis[1]):
84               utkozes=True
85               break           # a feladat nem kéri, hogy keressük meg az ütközést okozó táborokat
86       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