Level 03: Listen

Level 3: Listen #

Eine Liste, sie alle zu… äh… referenzieren #

In einer Variable lässt sich ein Wert speichern – eine Zahl, oder eine Zeichenkette, oder sonst etwas… wie sieht das nun aus, wenn Du Dir mehr als eine Sache merken möchtest? Z.B. weil Du einkaufen gehst, und einen Einkaufszettel schreiben möchtest? Du könntest verschiedene Variablen verwenden! Das sähe in einer REPL z.B. so aus:

>>> gegenstand_1 = 'Butter'
>>> gegenstand_2 = 'Schoko-Tropfen, backfest'
>>> gegenstand_3 = 'Vollkornmehl'
>>> gegenstand_4 = 'Zucker'
>>> 

Das könnte funktionieren… doch Moment! Spätestens wenn Du all dieses Variablen in einem Programm verwendest, und Dir dann einfällt, dass Du den Vanillezucker und die Eier vergessen hast, fehlt Dir der Platz zum Merken! Das ist ein Problem…

Glücklicherweise kann Python Daten auf verschiedene Arten sammeln. Eine dieser Sammlungen ist die Liste, und genau die wirst Du nun kennen lernen. Noch einmal zur REPL:

>>> einkaufszettel = ['Butter', 'Zucker', 'Mehl']
>>> einkaufszettel
['Butter', 'Zucker', 'Mehl']

So lässt sich eine Liste anlegen! Wenn jetzt Deine kleine Schwester ankommt und quengelt, weil Du ihr noch Fußballsammelkarten und Tintepatronen mitbringen sollst, können wir das einfach mit auf die Liste schreiben:

>>> einkaufszettel.append('Fußballsammelkarten')
>>> einkaufszettel.append('Tintenpatronen')
>>> einkaufszettel
['Butter', 'Zucker', 'Mehl', 'Fußballsammelkarten', 'Tintenpatronen']

Hier hast Du gleich eine Funktion kennengelernt, mit dem sich Gegenstände einer Liste hinzufügen lassen: append. Sieh’ dir genau an, wie diese Funktion hier eingesetzt wird!

Alles in Python ist ein Objekt…

Hinweis zur Einordnung

…und das macht sich hier bemerkbar. Python ist eine sogenannte multiparadigmatische Programmiersprache, und eines dieser Paradigmen ist die Objektorientierung. Die schicke Abkürzung dafür ist OOP – objektorientierte Programmierung.

Stell’ dir in diesem Fall vor, dass die Liste, die du mit einkaufsliste = [] erzeugst, schon einige Dinge kann. Sie kann mit append z.B. Zeichenketten aufnehmen. append wird von Pythonist:innen üblicherweise Funktion, und von allen anderen OOP-ler:innen Methode genannt.

Funktionen kannst du an Objekten aufrufen, indem du hinter dem Namen des Objektes einen Punkt setzt und dann den Namen der Funktion schreibst. Zum Schluss kommt immer noch ein Klammerpaar, das ggf. die Argumente enthält, die du der Funktion übergibst. Hier also:

einkaufszettel.append('OOP-Buch')

Diese Schreibweise heißt Punktschreibweise.

Übrigens sind auch all die Zeichenketten, die du dem Einkaufszettel bis hierhin hinzugefügt hast, ebenfalls Objekte. Diese Zeichenketten-Objekte sind über das Listen-Objekt einkaufszettel erreichbar – das nennen Programmierer:innen auch referenzieren.

Dein Elektronengehirnprogramm #

Sieh’ Dir nun dieses Programm an. Kannst Du herausbekommen, was es macht?

einkaufsliste = []
eingabe = input('Was soll auf den Einkaufszettel? (Tippe "ende", wenn Du fertig bist.) ')
while not eingabe == 'ende':
    einkaufsliste.append(eingabe)
    eingabe = input('Was noch? ')
print(einkaufsliste)

Übernimm das Programm in deine IDE. Lass es laufen und überprüfe, ob Deine Vermutung richtig war!

Ein Programmier-Job für dich: Sterne einsammeln #

Darf ich dich mit Carola bekanntmachen? Sie möchte eine Film-Bewertungsplattform programmieren, doch immer wieder gibt es Probleme. Kannst du ihr helfen?

Carola: Hallo! Gerade tauchen in den Listen mit den Bewertungen immer wieder Sieben-Sterne-und-höher-Bewertungen auf, obwohl doch höchstens fünf erlaubt sind! Letzte Woche ist »Die Pute von Panem« von irgendwelchen Spaßvögeln so zum beliebtesten Film auf der Plattform gemacht worden – das war peinlich! Kannst du uns helfen?

Hier ist der Code, der schon da ist:

sterneliste = []

while True:
    eingabe = input('Wie viele Sterne gibst du? ')

    # Hier sollst du überprüfen, ob höchstens 5 als Bewertung
    # eingegeben wurde, und dann die Zahl in die Liste schreiben


    # Nach jeder Eingabe wird die Liste aller Sterne ausgegeben
    print('Hier siehst du alle Bewertungen:')
    print(sterneliste)

Das wird ihn eine Weile beschäftigen…

Hinweis zur Einordnung

Das Programm wird für immer weiterlaufen – while True sorgt für eine Endloswiederholung. Viele Server funktionieren nach diesem Prinzip!

Du kannst das Programm beenden, indem du in deiner IDE mit einem Klick auf den roten Knopf unterbrichst. Läuft das Programm in einem Terminal, hilft die Tastenkombination Strg+C.

Tipp 1
Achte darauf, dass du deine Ergänzungen innerhalb des while-Blocks schreibst – die Einrückung ist wichtig!
Tipp 2
Erinnerst du dich noch an das if-Schlüsselwort? Das wirst du hier brauchen!
Tipp 3
Wenn du den Wert aus der Variable eingabe mit sterne = int(eingabe) in eine Zahl umwandelst, kannst du mit sterne <= 5 überprüfen, ob tatsächlich höchstens fünf Sterne sind.
Tipp 4
Mit sterneliste.append(sterne) lässt sich der Sterneliste eine neue Sternebewertung hinzufügen. (Die Variable sterne muss es natürlich hier schon geben – siehe Tipp 3.)
Lösungsvorschlag
sterneliste = []

while True:
    eingabe = input('Wie viele Sterne gibst du? ')

    # Hier sollst du überprüfen, ob höchstens 5 als Bewertung
    # eingegeben wurde, und dann die Zahl in die Liste schreiben
    sterne = int(eingabe)
    if sterne <= 5:
        sterneliste.append(sterne)

    # Nach jeder Eingabe wird die Liste aller Sterne ausgegeben
    print('Hier siehst du alle Bewertungen:')
    print(sterneliste)

Zurück Weiter