Level 03: Auf der Liste?

Level 3: Steht es auf der Liste? #

Carola ist sehr dankbar! Seitdem du ihr bei der Filme-Plattform geholfen hast, läuft die Plattform viel besser!

Zwei Monate Klopapier #

Doch leider ist deinem Vater etwas blödes passiert… er hat dein Einkaufszettelprogramm verwendet, und statt einer gleich drei Packungen Klopapier mitgebracht. Er sagte, er habe nur gekauft, was auf dem Zettel stand…

Offensichtlich überprüft das Programm nicht, ob etwas schon auf der Liste steht! Wir bräuchten einen Befehl, mit dem wir nachsehen könnten, ob etwas bereits in einer Liste vorhanden ist…

Öffne eine REPL, und versuche folgendes:

>>> liste = ['Butter', 'Mehl', 'Salz']
>>> liste
['Butter', 'Mehl', 'Salz']
>>> 'Butter' in liste
True
>>> 'Zucker' in liste
False

Das ist es! Der Befehl in sieht nach, ob der gesuchte Begriff in der Liste enthalten ist, und gibt dann True oder False aus.

in kenne ich doch irgendwoher… #

Außerdem wäre es doch schön, die Liste etwas schöner auszugeben, als mit den eckigen Klammern. Hierzu gibt es einen kleinen Trick. Du kennst bereits die for-Wiederholung. Hast Du gemerkt, dass da auch schon in auftaucht? Das Schöne ist: for-Wiederholungen funktioneren auch ganz hervorragend mit Listen! Gib folgendes in eine REPL ein:

>>> liste = ['Butter', 'Mehl', 'Salz']
>>> for einkauf in liste:
        print(einkauf)
    
Butter
Mehl
Salz
>>> 

Das sieht doch viel schöner aus, oder? Wir können also mit for <irgendein_name> in <irgendeine_liste> jedes Element einer Liste bearbeiten, ausgeben, usw. – das solltest Du Dir merken!

Übung: den Einkaufszettel verbessern #

Verbessere den Einkaufszettel. Überprüfe für jede Eingabe, ob der Gegenstand schon auf dem Zettel steht, und füge ihn nur hinzu, falls das noch nicht der Fall ist.

Außerdem könntest du die Ausgabe des Zettels verschönern: Wie lässt sich jeder Gegenstand in einer eigenen Zeile ausgeben?

einkaufsliste = []
eingabe = input('Was soll auf den Einkaufszettel? (Tippe "ende", wenn Du fertig bist.) ')
while eingabe != 'ende':
    # Überprüfe an dieser Stelle, ob die Eingabe bereits auf der Liste steht.
    # Füge sie nur hinzu, wenn sie noch nicht enthalten ist!


    einkaufsliste.append(eingabe)
    eingabe = input('Was noch? ')

# Füge hier anstelle der nächsten Zeile eine verschönerte Ausgabe der Einkaufsliste ein:
print(einkaufsliste)
Tipp 1
Der Ausdruck eingabe in einkaufsliste wird zu einem Wahrheitswert ausgewertet. Mit not kannst du False in True verwandeln.
Tipp 2
Die for-Wiederholung kann dir helfen, jeden Gegenstand der Liste durchzugehen und in einer eigenen Zeile auszugeben.
Lösungsvorschlag
einkaufsliste = []
eingabe = input('Was soll auf den Einkaufszettel? (Tippe "ende", wenn Du fertig bist.) ')
while eingabe != 'ende':
    # Überprüfe an dieser Stelle, ob die Eingabe bereits auf der Liste steht.
    # Füge sie nur hinzu, wenn sie noch nicht enthalten ist!
    if not eingabe in einkaufsliste:
        einkaufsliste.append(eingabe)

    eingabe = input('Was noch? ')

# Füge hier anstelle der nächsten Zeile eine verschönerte Ausgabe der Einkaufsliste ein:
for einkauf in einkaufsliste:
    print(einkauf)

Weiteres zu Listen… #

Listen in Python werden sehr oft genutzt, und sie sind sehr mächtig. Eine Übersicht über Methoden, die an Listen aufgerufen werden können, findest Du hier:

https://openbook.rheinwerk-verlag.de/python/13_002.html#u13.2.4

Zurück Weiter