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