Zum Hauptinhalt springen

Listen

Zum Speichern von mehreren Werten unter einem einzigen Namen verwendet man in Python Listen. Man kann sich Listen als Tabellen mit einer Spalte vorstellen. Die Zellen in der Tabelle werden als Elemente bezeichnet und sind durchnummeriert. So kann man einzelne in der Liste gespeichert Werte unterscheiden. Die Nummer eines Elements wird als dessen Index bezeichnet.

Wichtig
  • Das erste Element in der Liste trägt den Index 0.

  • Der Index des letzten Elementes ist die Länge der Liste minus 1.

Das folgende Bild illustriert dies für eine Liste mit 4 Noten. Die Länge der Liste ist 4, das letzte Element trägt den Index 3.

Index

Wert

0

4.5

1

5

2

3.5

3

5.5

In Python kann man diese Liste wie folgt erzeugen:

noten = [4.5, 5, 3.5, 5.5]
print('Die vierte Note war eine', noten[3])

Im Beispiel wird die vierte Note mit dem Index 3 ausgegeben.

Aufgaben​

1. listen-1d.py

Dateiname

EF-Informatik/exercises/listen-1d.py

  1. Erstellen Sie das folgende Programm in Ihrem Repository

    Programm

    listen-1d.py
    https://github.com/lebalz/ofi-blog/blob/main/docs/EF-Python/03-Python/assets/listen-1d.py
  2. Führen Sie das Programm Zeile für Zeile aus und untersuchen Sie die verschiedenen Listen-Optionen.

  3. Welche Fehlermeldung erscheint beim Szenario 6?

  4. commit & push...

2. Was steht geschrieben?

Dateiname

EF-Informatik/exercises/listen-word-riddle.py

Gegeben ist ein ALPHABET und eine Nachricht MESSAGE. In der Nachricht sind die Indices der zugehörigen Buchstaben gespeichert. Schreiben Sie ein Programm, welches die Nachricht decodiert und in Buchstabenform darstellt.

ALPHABET = [' ', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
MESSAGE = [12, 9, 19, 20, 0, 18, 9, 4, 4, 12, 5]
Hinweis
3. Meine Nummer 1

Dateiname

EF-Informatik/exercises/listen-word-riddle2.py

Nun wurde eine weitere Zuordnungsstufe hinzugefügt 😮. In der MESSAGE steht, an welcher Stelle im MAPPING der Index steht, an welchem der gesuchte Buchstabe zu finden ist. Finden Sie die Nachricht?

ALPHABET = [' ', '_', '.', ':', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
MAPPING = [54, 58, 53, 4, 8, 60, 45, 60, 12, 41, 13, 47, 60, 4, 44, 56, 62, 4, 58, 47, 41, 60, 55, 3, 9, 45, 60, 10, 19, 2, 54, 62, 48, 54, 56, 18, 41, 53, 44, 4, 58, 43, 1, 50, 54, 13, 2, 2, 49, 6, 1, 59, 14, 58, 16, 4]
MESSAGE = [32, 5, 7, 15, 51, 23, 3, 13, 48, 2, 11, 29, 14, 6, 16, 1, 9, 0, 12, 46, 41, 22, 37, 17, 38, 25, 31, 18, 20, 30, 21, 39, 40, 36, 33, 26, 55, 53, 42, 49, 8, 52, 10, 27, 4, 24, 50, 44, 54, 28, 45, 35, 47, 43, 34, 19]
Hinweis
print() Optionen

Normalerweise fügt die print-Funktion am Ende einer Ausgabe immer das Zeichen \n an, was von der Konsole als Steuerzeichen für eine neue Zeile interpretiert wird. Das können Sie aber auch ändern, indem Sie explizit vorgeben, welche Zeichen am Ende hinzugefügt werden:

# Mit Lücke zwischen einzelnen prints
for i in range(3):
print(f'Lücke {i}', end=' ')
# Ohne Zeichen zwischen einzelnen prints
for i in range(3):
print(f'Ohne {i}', end='')
# Fancy: mit Rakete und neuer Zeile zwischen einzelnen prints
for i in range(3):
print(f'Hello {i}', end=' 🚀\n')
4. Primzahlen

Dateiname

EF-Informatik/exercises/primzahlen.py

Schreiben Sie ein Programm welches eine Liste mit allen Primzahlen zwischen 1 und 100 erstellt und diese Liste am Schluss auf der Konsole ausgibt.

Bevor Sie Programmieren: Diskutieren Sie Ihr Vorgehen mit einer Kolleg:in und besprechen Sie gemeinsam eine algorithmische Lösung für das Problem. Halten Sie stichwortartig fest, was Sie besprochen haben.

Hinweis

Um den Rest bei einer Division zu berechnen, kann der Modulo-Operator verwendet werden.

Modulo %​

Um den ganzzahligen Rest bei der Division von zwei ganzen Zahlen zu bestimmen, wird der Modulo-Operator verwendet. Biespiel: Was ist der ganzzahlige Rest von 7/57 / 5?

print(7 % 5)
SSR
SSR
SSR

Eindimensionale Listen​

Hier nochmals in der Ãœbersicht die Funktionsweise von Listen in Python.

Liste erzeugen []​

# Liste erzeugen und Variablen zuweisen
noten = [3.5, 6, 5, 4.5]

# Ganze Liste anzeigen
print(noten)
# Element mit Index 2 aus der Liste anzeigen
print(noten[2])

Schleife über alle Elemente der Liste​

noten = [3.5, 6, 5, 4.5]

for note in noten:
print(note)

Schleife über Listen-Indices​

noten = [3.5, 6, 5, 4.5]

# (beginnt bei 0 und endet mit 1 weniger als Länge der Liste)
for index in range(0, len(noten)):
print(index, ":", noten[index])

Listenelemente ändern​

noten = [3.5, 6, 5, 4.5]

# Element mit Index 3 neuen Wert zuweisen
noten[3] = 5.5
print(noten)

Fehler: IndexError​

noten = [3.5, 6, 5, 4.5]

# die Liste ist nicht so lang
noten[7] = 6

Element hinzufügen append()​

noten = [3.5, 6, 5, 4.5]

# Element am Ende der Liste anhängen
noten.append(5)
print(noten)

Element an bestimmter Stelle hinzufügen insert()​

noten = [3.5, 6, 5, 4.5, 5]
# vor dem Element mit Index 3 eine "4" einfügen
noten.insert(3, 4)
print(noten)

Aufsteigend sortieren sort()​

noten = [3.5, 6, 5, 4, 4.5, 5]

noten.sort()
print(noten)

Letztes Element entfernen pop()​

Letztes Element entfernen und zurückgeben.

noten = [3.5, 4, 4.5, 5, 5, 6]

last = noten.pop()
print(last)
print(noten)

Element bei Index entfernen pop(0)​

vorderstes = noten.pop(0)
print(vorderstes)
print(noten)

Element aus der Liste entfernen remove()​

noten = [3.5, 5, 4.5, 4, 5, 6]

# 11) Erstes Element mit dem Wert 5 aus der Liste entfernen
noten.remove(5)
print(noten)

Mittelwert statistics.mean()​

import statistics

noten =[3.5, 5, 4.5, 4, 5, 6]

mittelwert = statistics.mean(noten)
print(mittelwert)

Weitere Funktionen

Leere Liste []​

# Leere Liste erstellen
noten = []
print(noten)

Liste mit Text​

# Liste mit Strings
noten =['gut', 'erfüllt', 'mangelhaft', 'erfüllt']
print(noten)