Egy komplex Python program több programozási koncepciót (objektum-orientáltság, adatbázis-kezelés, API integráció, hibakezelés) ötvöz. Az alábbiakban egy Weather Station Simulator (Időjárás-állomás szimulátor) példát mutatok be. A program objektum-orientált, generálja és lekérdezi a hőmérséklet értékeket, majd kiírja azokat egy lokális JSON fájlba.
--------------
import json
import random
import time
from datetime import datetime
from typing import Dict, Any
class WeatherStation:
"""Időjárás-állomás osztály adatok gyűjtésére és naplózására."""
def __init__(self, station_id: str, location: str):
self.station_id = station_id
self.location = location
self.log_file = "weather_report.json"
def measure_data(self) -> Dict[str, Any]:
"""Szimulálja a hőmérséklet és páratartalom mérését."""
return {
"timestamp": datetime.now().isoformat(),
"station_id": self.station_id,
"location": self.location,
"temperature_celsius": round(random.uniform(-5.0, 35.0), 2),
"humidity_percent": random.randint(20, 100),
"status": "Aktiv"
}
def save_to_json(self, data: Dict[str, Any]) -> None:
"""Adatok hozzáfűzése a lokális JSON fájlhoz."""
try:
# Meglévő adatok betöltése, ha létezik a fájl
with open(self.log_file, 'r', encoding='utf-8') as file:
history = json.load(file)
except (FileNotFoundError, json.JSONDecodeError):
history = []
history.append(data)
# Frissített adatok mentése
with open(self.log_file, 'w', encoding='utf-8') as file:
json.dump(history, file, indent=4, ensure_ascii=False)
def run_simulation(self, cycles: int = 3) -> None:
"""Szimulációs ciklus futtatása adott számú ismétléssel."""
print(f"Indul az állomás: {self.station_id} ({self.location})")
for i in range(cycles):
data = self.measure_data()
self.save_to_json(data)
print(f"[{i+1}/{cycles}] Adat rögzítve: {data['temperature_celsius']} °C")
time.sleep(1) # Várakozás a mérések között
if __name__ == "__main__":
# A program belépési pontja
nyiregyhaza_station = WeatherStation(
station_id="WS-NYH-01",
location="Nyíregyháza"
)
nyiregyhaza_station.run_simulation(cycles=5)
print("\nA szimuláció véget ért. A részletes adatok a 'weather_report.json' fájlban találhatók.")
---------------------
Indul az állomás: WS-NYH-01 (Nyíregyháza)
[1/5] Adat rögzítve: -2.59 °C
[2/5] Adat rögzítve: 9.01 °C
[3/5] Adat rögzítve: 11.3 °C
[4/5] Adat rögzítve: 26.6 °C
[5/5] Adat rögzítve: 34.09 °C
Nincsenek megjegyzések:
Megjegyzés küldése