tanciskola201505idny.py
1    tanc=[]
2    tancok=set()
3    #-----------------------------------------------------------------------------------------
4    # 1. Olvassa be a tancrend.txt állományban talált adatokat, s annak felhasználásával
5    #    oldja meg a következő feladatokat!
6    #-----------------------------------------------------------------------------------------
7    def F1():
8        print('1.feladat - adatok beolvasása')
9        
10       fbe=open('tancrend.txt','r')
11       harom=[]
12       for sor in fbe:
13           sor=sor.strip()
14           if len(harom)==0:
15               tancok.add(sor)
16           harom.append(sor)
17           if len(harom)==3:
18               tanc.append(harom)
19               harom=[]
20       print(tancok)
21       print(tanc)
22       fbe.close()
23           
24   #-----------------------------------------------------------------------------------------
25   # 2. Írassa ki a képernyőre, hogy melyik volt az elsőként és melyik az utolsóként
26   #    bemutatott tánc neve!
27   #-----------------------------------------------------------------------------------------
28   def F2():
29       print('\n2.feladat')
30       print('Elsőként bemutatott tánc  : %s' %tanc[0][0])
31       print('Utolsóként bemutatott tánc: %s' %tanc[-1][0])
32   #-----------------------------------------------------------------------------------------
33   # 3. Hány pár mutatta be a sambát? A választ jelenítse meg a képernyőn!
34   #-----------------------------------------------------------------------------------------
35   def F3():
36       print('\n3.feladat')
37       samba=0
38       for parok in tanc:
39           if parok[0]=='samba':
40               samba+=1
41       print('A samba-t bemutató párok száma: %d' %samba)
42   #-----------------------------------------------------------------------------------------
43   # 4. Írassa ki a képernyőre, hogy Vilma mely táncokban szerepelt!
44   #-----------------------------------------------------------------------------------------
45   def F4():
46       print('\n4.feladat')
47       print('Vilma az alábbi táncokban szerepelt:')
48       nev='Vilma'     #csak az esetleges tesztelések miatt
49       for parok in tanc:
50           if parok[1]==nev:   #az 1 indexen a lányok vannak
51               print(parok[0])
52   #-----------------------------------------------------------------------------------------
53   # 5. Kérje be egy tánc nevét, majd írassa ki a képernyőre, hogy az adott táncot Vilma
54   #    kivel mutatta be! Például ha a bekért tánc a samba, és Vilma párja Bertalan volt,
55   #    akkor „A samba bemutatóján Vilma párja Bertalan volt.” szöveg jelenjen meg! 
56   #    Ha Vilma az adott tánc bemutatóján nem szerepelt, akkor azt írja ki a képernyőre,
57   #    hogy „Vilma nem táncolt samba-t.”.
58   #-----------------------------------------------------------------------------------------
59   def F5():
60       print('\n5.feladat')
61       tancnev=input('Kérem egy tánc nevét: ')
62       if tancnev in tancok:
63           nev='Vilma'
64           oke=False
65           for parok in tanc:
66               if parok[0]==tancnev and parok[1]==nev:
67                   print('A %s bemutatóján Vilma párja %s volt.' %(tancnev,parok[2]))
68                   oke=True
69                   break
70           if not oke:        
71               print('Vilma nem táncolt %s-t.' %tancnev)
72       else:
73           print('Ilyen tánc nincs!')
74       
75   #-----------------------------------------------------------------------------------------
76   # 6. Készítsen listát a bemutatón részt vett fiúkról és lányokról! A listát a
77   #    szereplok.txt nevű szöveges állományba mentse el a következő formátumban: a neveket
78   #    vesszők válasszák el egymástól, de az utolsó név után már ne szerepeljen írásjel.
79   #    Például: 
80   #           Lányok: Lujza, Katalin, Andrea, Emma 
81   #           Fiúk: Ferenc, Ambrus, Andor, Kelemen, Bertalan
82   #-----------------------------------------------------------------------------------------
83   def F6():
84       print('\n6.feladat')
85       fki=open('szereplok.txt','w')
86       global lanyok,fiuk
87       lanyok=set()
88       fiuk=set()
89       for parok in tanc:
90           lanyok.add(parok[1])
91           fiuk.add(parok[2])
92       ki='Lányok: '
93       for lany in lanyok:
94           ki+=(lany+', ')
95       fki.write(ki[0:len(ki)-2]+'\n')
96       ki='Fiúk: '
97       for fiu in fiuk:
98           ki+=(fiu+', ')
99       fki.write(ki[0:len(ki)-2])
100      fki.close()
101  #-----------------------------------------------------------------------------------------
102  # 7. Írja ki a képernyőre, hogy melyik fiú szerepelt a legtöbbször a fiúk közül, és
103  #    melyik lány a lányok közül! Ha több fiú, vagy több lány is megfelel a feltételeknek,
104  #    akkor valamennyi fiú, illetve valamennyi lány nevét írja ki!
105  #-----------------------------------------------------------------------------------------
106  def F7():
107      print('\n7.feladat')
108      #A 6.feladatban létrehozott halmazokat listává alakítom, hogy indexelhetőek legyenek.
109      llanyok=list(lanyok)
110      lfiuk=list(fiuk)
111      #Számlálni fogom az egyes lányokat és fiúkat
112  
113      #Lányok ---------------------------------
114      max_lanyok=[0]*len(llanyok)
115      for i,lany in enumerate(llanyok):
116          for parok in tanc:
117              if parok[1]==lany:
118                  max_lanyok[i]+=1
119      maxi=max(max_lanyok)
120      print('Legtöbbször szereplő lány(ok):')
121      for i,ertek in enumerate(max_lanyok):
122          if ertek==maxi:
123              print(llanyok[i])
124  
125      #Fiúk -----------------------------------
126      max_fiuk=[0]*len(lfiuk)
127      for i,fiu in enumerate(lfiuk):
128          for parok in tanc:
129              if parok[2]==fiu:
130                  max_fiuk[i]+=1
131      maxi=max(max_fiuk)
132      print('Legtöbbször szereplő fiú(k):')
133      for i,ertek in enumerate(max_fiuk):
134          if ertek==maxi:
135              print(lfiuk[i])
136      
137                  
138  #-----------------------------------F Ő M O D U L-----------------------------------------
139  F1()
140  F2()
141  F3()
142  F4()
143  F5()
144  F6()
145  F7()
146