Übung 14 – Listen

Ziel dieser Übung

Sie speichern viele Werte in einer Liste, erweitern sie mit append und gehen sie mit for durch.

So arbeiten Sie: Bearbeiten Sie die Schritte der Reihe nach. Ihre Tabellen und Programme tragen Sie in die Reflexion zu Sitzung 4 ein. Öffnen Sie die Hilfen erst, wenn Sie nicht weiterkommen: zuerst den Tipp, dann das Gerüst, zuletzt die Lösung. Ihre Lösung darf anders aussehen – wichtig ist, dass sie für alle Testeingaben das Richtige ausgibt.

1. Listen anlegen und benutzen

einkauf = ["Brot", "Milch", "Äpfel"]

print(len(einkauf))
print(einkauf[0])
print(einkauf[-1])

einkauf.append("Käse")
for ding in einkauf:
    print(f"- {ding}")
3
Brot
Äpfel
- Brot
- Milch
- Äpfel
- Käse

2. Aufgaben

Aufgabe 3a · Einkaufsliste Pflicht, ca. 10 Min.

Eine Einkaufsliste soll so lange Einträge sammeln, bis jemand nur Enter drückt. Danach zeigt sie die ganze Liste an.

Ihre Aufgabe

  1. Tragen Sie ein, was das Programm bei den Eingaben am Ende ausgeben muss. „Enter“ heißt: leere Eingabe.
    Eingaben nacheinanderAnzahl (erwartet)Liste (erwartet)
    Brot, Milch, Enter
    Enter
    Äpfel, Käse, Nudeln, Enter
  2. Schreiben Sie einkauf.py: Es beginnt mit einer leeren Liste und fragt mit Was brauchen Sie? (Enter = fertig) so lange nach Einträgen, bis die Eingabe leer ist. Jeder Eintrag kommt mit append in die Liste.
  3. Geben Sie danach die Anzahl und mit for jeden Eintrag genau so aus:
    Was brauchen Sie? (Enter = fertig) Brot
    Was brauchen Sie? (Enter = fertig) Milch
    Was brauchen Sie? (Enter = fertig) 
    Ihre Liste hat 2 Einträge:
    - Brot
    - Milch
  4. Testen Sie mit allen drei Zeilen der Tabelle.

Fertig sind Sie, wenn alle drei Tests stimmen – auch der mit einer leeren Liste.

Tipp

Hier treffen sich beide Schleifen: Wie viele Einträge kommen, wissen Sie vorher nicht – also while ding != "":. Die fertige Liste gehen Sie dann mit for ding in einkauf: durch. Die Anzahl liefert len(einkauf).

Gerüst

Ersetzen Sie jedes ___ durch den passenden Ausdruck.

einkauf = []
ding = input("Was brauchen Sie? (Enter = fertig) ")

while ___:
    einkauf.___(ding)
    ding = input("Was brauchen Sie? (Enter = fertig) ")

print(f"Ihre Liste hat {___} Einträge:")
for ___ in einkauf:
    print(f"- {ding}")
Lösung
EingabenAnzahlListe
Brot, Milch, Enter2- Brot
- Milch
Enter0(keine Einträge)
Äpfel, Käse, Nudeln, Enter3- Äpfel
- Käse
- Nudeln
einkauf = []
ding = input("Was brauchen Sie? (Enter = fertig) ")

while ding != "":
    einkauf.append(ding)
    ding = input("Was brauchen Sie? (Enter = fertig) ")

print(f"Ihre Liste hat {len(einkauf)} Einträge:")
for ding in einkauf:
    print(f"- {ding}")
Was brauchen Sie? (Enter = fertig) Äpfel
Was brauchen Sie? (Enter = fertig) Käse
Was brauchen Sie? (Enter = fertig) Nudeln
Was brauchen Sie? (Enter = fertig) 
Ihre Liste hat 3 Einträge:
- Äpfel
- Käse
- Nudeln
Bei sofortigem Enter läuft die while-Schleife kein einziges Mal und die for-Schleife auch nicht: Es erscheint nur Ihre Liste hat 0 Einträge:.

Aufgabe 3b · Noten auswerten Pflicht, ca. 10 Min.

Für die Noten [2, 1, 3, 2, 4] sollen der Durchschnitt und die beste Note berechnet werden – mit einer einzigen for-Schleife.

Ihre Aufgabe

  1. Rechnen Sie Durchschnitt und beste Note von Hand aus und tragen Sie beides ein.
    NotenDurchschnitt (erwartet)Beste Note (erwartet)
    [2, 1, 3, 2, 4]
    [3, 3, 3]
    [5, 4, 2]
  2. Schreiben Sie noten.py: Gehen Sie mit for durch die Liste, zählen Sie in summe zusammen und merken Sie sich mit if in beste die kleinste Note.
  3. Geben Sie beides genau so aus:
    Durchschnitt: 2.4
    Beste Note: 1
  4. Testen Sie auch die beiden anderen Listen aus der Tabelle, indem Sie die erste Zeile ändern.

Fertig sind Sie, wenn alle drei Listen das Ergebnis aus Ihrer Tabelle liefern.

Zusatz für Schnelle: Zählen Sie für [2, 1, 3, 2, 4, 1, 2], wie oft jede Note von 1 bis 6 vorkommt. Tipp: eine for-Schleife in einer for-Schleife.

Tipp

Starten Sie mit beste = noten[0], also mit der ersten Note. In der Schleife gilt: Ist note < beste, wird beste = note. Den Durchschnitt rechnen Sie nach der Schleife: summe / len(noten).

Gerüst

Ersetzen Sie jedes ___ durch den passenden Ausdruck.

noten = [2, 1, 3, 2, 4]
summe = 0
beste = noten[0]

for note in noten:
    summe = ___
    if ___:
        beste = note

print(f"Durchschnitt: {summe / len(noten)}")
print(f"Beste Note: {beste}")
Lösung
NotenDurchschnittBeste Note
[2, 1, 3, 2, 4]2.41
[3, 3, 3]3.03
[5, 4, 2]3.6666666666666665 (≈ 3,7)2
noten = [2, 1, 3, 2, 4]
summe = 0
beste = noten[0]

for note in noten:
    summe = summe + note
    if note < beste:
        beste = note

print(f"Durchschnitt: {summe / len(noten)}")
print(f"Beste Note: {beste}")
Durchschnitt: 2.4
Beste Note: 1
„Beste“ Note heißt hier: die kleinste Zahl. Python kennt dafür auch min(noten) und sum(noten) – die Schleife zeigt Ihnen, was diese Funktionen im Inneren tun. Lange Kommazahlen kürzen Sie mit {wert:.1f}.

Zusatz:

noten = [2, 1, 3, 2, 4, 1, 2]

for wert in range(1, 7):
    anzahl = 0
    for note in noten:
        if note == wert:
            anzahl = anzahl + 1
    print(f"Note {wert}: {anzahl}-mal")
Note 1: 2-mal
Note 2: 3-mal
Note 3: 1-mal
Note 4: 1-mal
Note 5: 0-mal
Note 6: 0-mal