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()