epitmenyado202205.py
1    #ÉPÍTMÉNYADÓ - 2022 május 16. emelt szint INFORMATIKA
2    
3    #------------------------------------------------------------------------------
4    # 1. Olvassa be és tárolja el az utca.txt állományban talált adatokat, és annak
5    #    felhasználásával oldja meg a következő feladatokat!
6    #------------------------------------------------------------------------------
7    
8    fbe=open('Utca.txt','r')
9    
10   savok=list(map(int,fbe.readline().strip().split()))
11   telkek=[]                   #mátrix: ebben lesznek a telkek adatai
12   for sor in fbe:             # pl.: 33366 Aradi 8A C 180
13       telkek.append(sor.strip().split())
14   
15   fbe.close()
16   
17   #------------------------------------------------------------------------------
18   # 2. Hány telek adatai találhatók az állományban? Az eredményt írassa ki a
19   #    mintának megfelelően a képernyőre!
20   #------------------------------------------------------------------------------
21   print(f'2. feladat. A mintában {len(telkek)} telek szerepel.')
22   
23   #------------------------------------------------------------------------------
24   # 3. Kérje be egy tulajdonos adószámát, és írassa ki a mintához hasonlóan,
25   #    hogy melyik utcában, milyen házszám alatt van építménye! Ha a megadott
26   #    azonosító nem szerepel az adatállományban, akkor írassa ki a
27   #    „Nem szerepel az adatállományban.” hibaüzenetet!
28   #------------------------------------------------------------------------------
29   print('3. feladat.',end=' ')
30   adoszam=input('Egy tulajdonos adószáma: ')          # pl.: '68396'
31   
32   #NE FELEDJÜK, HOGY EGY TULAJDONOSNAK TÖBB TELKE IS LEHET!
33   #klasszikus kiválogatás, és ha nem válogattunk ki semmit, akkor NEM szerepel...
34   
35   tulaj=[]    #ebbe válogatom a telkeit
36   
37   for telek in telkek:
38       if telek[0]==adoszam:                       #egy tuple kerül a listába:
39           tulaj.append((telek[1],telek[2]))       #(utca, házszám)
40   
41   if len(tulaj)>0:
42       for telek in tulaj:
43           print(f'{telek[0]} utca {telek[1]}')
44   else:
45       print('Nem szerepel az adatállományban.')
46   
47   #------------------------------------------------------------------------------
48   # 4. Készítsen függvényt ado néven, amely meghatározza egy adott építmény után
49   #    fizetendő adót! A függvény paraméterlistájában szerepeljen az adósáv és
50   #    az alapterület, visszaadott értéke pedig legyen a fizetendő adó!
51   #    A következő feladatokban ezt a függvényt is felhasználhatja.
52   #------------------------------------------------------------------------------
53   
54   #A feladat 2. bekezdése:
55   #    Az építmény után négyzetméterenként fizetendő összeg sávonként eltérő,
56   #    azonban, ha az így kiszámított összeg nem éri el a 10.000 Ft-ot, akkor az
57   #    adott építmény után nem kell adót fizetni.
58   
59   #   savok lista itt kerül felhasználásra
60   #   ha kényelmesebb használhatunk dictionary adattípust is, de nem fontos... :)
61   
62   def ado(adosav,alapterulet):
63       # a match szerkezet csak 3.10-es verziótól van így az alábbi nem lehetséges:
64       ''' 
65       match adosav: 
66           case 'A': fizetendo=alapterulet*savok[0] 
67           case 'B': fizetendo=alapterulet*savok[1] 
68           case 'C': fizetendo=alapterulet*savok[2] 
69       '''
70       if adosav=='A':
71           fizetendo=alapterulet*savok[0]
72       elif adosav=='B':
73           fizetendo=alapterulet*savok[1]
74       else:
75           fizetendo=alapterulet*savok[2]
76           
77       if fizetendo<10000:
78           return 0
79       else:
80           return fizetendo
81   
82   #------------------------------------------------------------------------------
83   # 5. Határozza meg, hogy hány építmény esik az egyes adósávokba, és mennyi az
84   #    adó összege adósávonként! Az eredményt a mintának megfelelően írassa ki a
85   #    képernyőre!
86   #------------------------------------------------------------------------------
87   print('5. feladat')
88   
89   #feltételes összegzés és megszámlálás
90   A_db,A_ado,B_db,B_ado,C_db,C_ado=0,0,0,0,0,0
91   
92   for telek in telkek:
93       if telek[3]=='A':
94           A_db+=1
95           A_ado+=ado(telek[3],int(telek[4]))
96       if telek[3]=='B':
97           B_db+=1
98           B_ado+=ado(telek[3],int(telek[4]))
99       if telek[3]=='C':
100          C_db+=1
101          C_ado+=ado(telek[3],int(telek[4]))
102  
103  
104  print(f'A sávba {A_db} telek esik, az adó {A_ado} Ft.')
105  print(f'B sávba {B_db} telek esik, az adó {B_ado} Ft.')
106  print(f'C sávba {C_db} telek esik, az adó {C_ado} Ft.')
107  
108  #------------------------------------------------------------------------------
109  # 6. Bár az utcák többé-kevésbé párhuzamosak a tó partjával, az egyes porták
110  #    távolsága a parttól az utcában nem feltétlenül ugyanannyi. Emiatt néhány
111  #    utcában – az ottani tulajdonosok felháborodására – egyes telkek eltérő
112  #    sávba esnek. Listázza ki a képernyőre, hogy melyek azok az utcák, ahol a
113  #    telkek sávokba sorolását emiatt felül kell vizsgálni! Feltételezheti,
114  #    hogy minden utcában van legalább két telek.
115  #------------------------------------------------------------------------------
116  print('6. feladat. A több sávba sorolt utcák:')
117  
118  #Ne bonyolítsuk el a feladatot:
119  #    legyen egy halmazunk, amelyben az utca neveket összeszedjük és
120  #    ezt felhasználva nézzük meg, hogy egy vagy több adósáv kerül-e
121  #    az adott utcanévhez!
122  
123  utcak=set()
124  
125  for telek in telkek:
126      utcak.add(telek[1])         #utcanevek a halmazba
127  
128  for utca in utcak:              #most megvizsgáljuk utcánként az adósávokat
129      adosavok=set()                 #ebbe a halmazba tesszük az utca adósávját
130      for telek in telkek:
131          if telek[1]==utca:      #ez a telek azonos az aktuális utcával
132              adosavok.add(telek[3])
133      if len(adosavok)>1:         #ez egy olyan utca, amelyben több adósáv van
134          print(utca)
135      
136  #------------------------------------------------------------------------------
137  # 7. Határozza meg a fizetendő adót tulajdonosonként! A tulajdonos adószámát
138  #    és a fizetendő összeget írassa ki a mintának megfelelően a fizetendo.txt
139  #    állományba! A fájlban minden tulajdonos adatai új sorban szerepeljenek,
140  #    a tulajdonos adószámát egy szóközzel elválasztva kövesse az általa
141  #    fizetendő adó teljes összege.
142  #------------------------------------------------------------------------------
143  
144  fki=open('fizetendo.txt','w')
145  
146  #most tulajdonosonként kell vizsgálódni. Lehet az előző módszer is:
147  tulajok=set()
148  for telek in telkek:
149      tulajok.add(telek[0])
150  
151  for tulaj in tulajok:
152      adoFT=0
153      for telek in telkek:
154          if telek[0]==tulaj:
155              adoFT+=ado(telek[3],int(telek[4]))
156      print(tulaj+' '+str(adoFT),file=fki)
157  
158  fki.close()
159  
160  
161  
162  
163  
164  
165