Zum Inhalt springen
BetaEN
Lektion 22 von 35Python

Python · Lektion 22 · 45 Minuten

Projekt: Wetterstation

Das lernst du

  • Messwerte in Listen speichern und mit zip() paarweise durchgehen
  • Durchschnitt, Minimum und Maximum berechnen
  • Daten als Balkendiagramm aus Text darstellen

Messwerte sammeln

Eine Wetterstation misst ständig: Temperatur, Luftfeuchte, Wind. Auch ein Roboter tut das mit seinen Sensoren. Messwerte landen fast immer in einer Liste, und Python hat fertige Werkzeuge, um sie auszuwerten:

temperaturen = [16, 19, 24, 21, 17, 15, 18]

print("Höchstwert:", max(temperaturen))
print("Tiefstwert:", min(temperaturen))
print("Summe:", sum(temperaturen))
print("Anzahl:", len(temperaturen))
print("Durchschnitt:", sum(temperaturen) / len(temperaturen))

Der Durchschnitt hat viele Nachkommastellen. Mit round(zahl, 1) bleibt nur eine übrig.

Zwei Listen gleichzeitig: zip()

Die Tage und die Temperaturen stehen in zwei Listen, die zusammengehören. zip() legt sie wie einen Reißverschluss nebeneinander:

tage = ["Mo", "Di", "Mi"]
regen = [0, 5, 2]

for tag, mm in zip(tage, regen):
    print(tag, "→", mm, "mm Regen")

# An welchem Tag hat es am meisten geregnet?
nummer = regen.index(max(regen))
print("Nassester Tag:", tage[nummer])

Diagramme aus Text

Für ein Diagramm brauchst du keine Grafik. Ein Text mal eine Zahl wiederholt den Text – fertig ist der Balken:

print("#" * 5)
print("=" * 12)

punkte = {"Ida": 7, "Ben": 4, "Mo": 9}
for name, p in punkte.items():
    print(f"{name:4} {'█' * p} {p}")

{name:4} füllt den Namen auf 4 Zeichen auf. So beginnen alle Balken an derselben Stelle.

Wie viele Sommertage?

Oft willst du zählen, wie viele Werte eine Bedingung erfüllen. Eine kurze Schleife oder sum() mit einer Bedingung erledigt das:

temperaturen = [16, 19, 26, 27, 17, 25, 18]

sommertage = sum(1 for t in temperaturen if t >= 25)
print("Sommertage:", sommertage)

warm = [t for t in temperaturen if t >= 20]
print("Warme Werte:", warm)

Weiterbauen: Zähle die Sommertage, zeichne zusätzlich die Tiefstwerte oder speichere die Messwerte als CSV-Datei (eine Zeile pro Tag, Werte mit Komma getrennt) – wie in der Lektion über Dateien. Genau so zeichnest du später die Messwerte deines Roboters auf und öffnest sie in einer Tabellenkalkulation.

Deine Aufgabe

Jetzt bist du dran

Werte die Temperaturen einer Woche aus. Schreib eine Funktion durchschnitt(werte), die den Durchschnitt auf eine Nachkommastelle gerundet zurückgibt. Gib dann für jeden Tag einen Balken aus – ein # pro Grad, z. B. Mo | ################ 16. Danach kommen Wärmster Tag: Mi (24 °C) und als letzte Zeile Durchschnitt: 18.6 °C.

tage = ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"]
temperaturen = [16, 19, 24, 21, 17, 15, 18]


def durchschnitt(werte):
    pass


# Balkendiagramm und Auswertung

Ohne Hinweise gelöst gibt es einen ⭐ auf deiner Fortschrittsseite.

Lösung anzeigen

Versuch es erst selbst – aus Fehlern lernt man am meisten. Hier ist eine mögliche Lösung:

tage = ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"]
temperaturen = [16, 19, 24, 21, 17, 15, 18]


def durchschnitt(werte):
    return round(sum(werte) / len(werte), 1)


for tag, grad in zip(tage, temperaturen):
    print(f"{tag} | {'#' * grad} {grad}")

hoechster = max(temperaturen)
tag = tage[temperaturen.index(hoechster)]
print(f"Wärmster Tag: {tag} ({hoechster} °C)")
print(f"Durchschnitt: {durchschnitt(temperaturen)} °C")