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- Denkanstoß
Teile
sum(werte)durchlen(werte)und runde mitround(…, 1). - Welcher Befehl hilft?
Mit
zip(tage, temperaturen)bekommst du Tag und Temperatur gleichzeitig. Ein Text mal eine Zahl wiederholt ihn:"#"*3 ergibt ###.max(temperaturen)liefert die höchste Temperatur,temperaturen.index(…)ihre Position in der Liste.Schreib keine Werte fest ins Programm – rechne alles aus der Liste temperaturen aus.
- Lückencode – ergänze die ___
tage = ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"] temperaturen = [16, 19, 24, 21, 17, 15, 18] def durchschnitt(werte): return ___ for tag, grad in ___: print(___) hoechster = ___ tag = ___ print(___) print(___)
Ohne Hinweise gelöst gibt es einen ⭐ auf deiner Fortschrittsseite.
Lösung anzeigen🔒 Erst nach allen Hinweisen oder 2 Prüf-Versuchen
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")