Erettsegi_2020/metjelentes.py

141 lines
4.8 KiB
Python

from operator import attrgetter
# Function definitions
def szelero(szel):
return int(f"{szel[3]}{szel[4]}")
# Class for the datas
class meres():
def __init__(self, telepules, ido, szel, homerseklet):
self.telepules = telepules
self.ido = ido
self.szel = szel
self.homerseklet = homerseklet
class varos():
def __init__(self, nev, kozephez, minTemp, maxTemp, szel, ido):
self.nev = nev
self.kozephez = kozephez
self.minTemp = minTemp
self.maxTemp = maxTemp
self.szel = szel
self.ido = ido
def kozepHomerseklet(self):
if "NA" in self.kozephez:
return f"{self.nev} NA"
else:
return f"{self.nev} {round(sum(self.kozephez) / len(self.kozephez))}"
def homersekletIngadozas(self):
return f"{(self.maxTemp - self.minTemp)}"
if __name__ == "__main__":
# 1. Feladat: Read in the data
meresek = []
file = open("tavirathu13.txt")
for line in file:
meresek.append(meres(line.split()[0],
f"{line.split()[1][0]}{line.split()[1][1]}:{line.split()[1][2]}{line.split()[1][3]}",
line.split()[2],
int(line.split()[3])))
file.close()
# 2. Feladat:
print("2. Feladat:")
inCity = input("Adja meg egy település kódját! Település: ")
for i in range(len(meresek) - 1, -1, -1):
if meresek[i].telepules == inCity:
print(f"Az utolsó mérési adat a megadott településről {meresek[i].ido}-kor érkezett.")
break
# 3. Feladat:
print("3. Feladat:")
# Minimum temperature
minTemp = min(meresek, key=attrgetter("homerseklet")).homerseklet
minCity = min(meresek, key=attrgetter("homerseklet")).telepules
minTime = min(meresek, key=attrgetter("homerseklet")).ido
print(f"A legalacsonyabb hőmérseklet {minCity} {minTime} {minTemp} fok")
# Maximum temperature
maxTemp = max(meresek, key=attrgetter("homerseklet")).homerseklet
maxCity = max(meresek, key=attrgetter("homerseklet")).telepules
maxTime = max(meresek, key=attrgetter("homerseklet")).ido
print(f"A legalacsonyabb hőmérseklet {maxCity} {maxTime} {maxTemp} fok")
# 4. Feladat:
print("4. Feladat:")
szelCsend = []
for i in meresek:
if i.szel == "00000":
szelCsend.append(f"{i.telepules} {i.ido}")
if len(szelCsend) > 0:
for i in range(0, len(szelCsend), 1):
print(szelCsend[i])
else:
print("Nem volt szélcsend a mérések idején")
# 5. Feladat:
print("5. Feladat:")
varosok = []
for i in range(0, len(meresek), 1):
if len(varosok) == 0:
varosok.append(meresek[i].telepules)
if meresek[i].telepules not in varosok:
varosok.append(meresek[i].telepules)
varosokClass =[]
for i in varosok:
temps = []
temps2 = []
szel = []
ido = []
for j in range(0, len(meresek), 1):
if i == meresek[j].telepules:
temps.append(meresek[j].homerseklet)
szel.append(meresek[j].szel)
ido.append(meresek[j].ido)
if "01:" in meresek[j].ido:
temps2.append(int(meresek[j].homerseklet))
elif "07:" in meresek[j].ido:
temps2.append(int(meresek[j].homerseklet))
elif "13:" in meresek[j].ido:
temps2.append(int(meresek[j].homerseklet))
elif "13:" in meresek[j].ido:
temps2.append(int(meresek[j].homerseklet))
minTemp = min(temps)
maxTemp = max(temps)
if len(temps2) != 4:
for n in range(0, len(temps2), 1):
temps2[n] = "NA"
for n in range(len(temps2) - 1, 5, 1):
temps2.append("NA")
varosokClass.append(varos(i, temps2, minTemp, maxTemp, szel, ido))
for i in varosokClass:
print(f"Hőmérséklet-ingadozás: {i.homersekletIngadozas()}")
# a) részhez visszatérni
# 6. Feladat
# for i in range(0, len(varosokClass), 1):
# print(varosokClass[i].nev, varosokClass[i].ido[0], szelero(varosokClass[i].szel[0]))
for i in range(0, len(varosokClass), 1):
file = open(f"{varosokClass[i].nev}.txt", "w+")
file.write(f"{varosokClass[i].nev}\n")
for j in range(0, len(varosokClass[i].ido), 1):
file.write(f"{varosokClass[i].ido[j]} ")
for n in range(0, szelero(varosokClass[i].szel[j]), 1):
file.write("#")
file.write("\n")
file.close()