Aufwärmen · Aufgabe 1 von 7
Aufwärmen aus Lektion B1.3: Was gibt das aus?
word = "Python"
print(word[-3:])// B1.4 · ca. 25 Min. · Einstieg
Nach dieser Lektion speichern Sie mehrere Werte in einer Liste, lesen und ändern Einträge über ihre Position, hängen etwas an und erkennen, wann zwei Namen dieselbe Liste teilen.
Danach können Sie
Aufwärmen · Aufgabe 1 von 7
word = "Python"
print(word[-3:])Vorhersagen · Aufgabe 2 von 7
cubes = [1, 8, 27, 65, 125]
cubes[3] = 64
print(cubes)Üben · Aufgabe 3 von 7
letters = ["a", "b"]
letters.____("c")
print(letters)Üben · Aufgabe 4 von 7
nums = [1, 2, 3, 4, 5]
print(nums[1:3], nums[-1], len(nums))Üben · Aufgabe 5 von 7
Denksport · Aufgabe 6 von 7
a = [1, 2, 3]
b = a
b.append(4)
print(a)Anwenden · Aufgabe 7 von 7
Prüfen Sie Ihr Ergebnis anhand dieser Liste
Lesen Sie das ausgearbeitete Beispiel und lösen Sie dann die Übungen. Ihr Code läuft in Ihrem Browser oder auf Ihrem Computer und wird nie hochgeladen.
Ausgearbeitetes Beispiel
Das Programm speichert die Tagestemperaturen einer Woche in einer Liste, Montag zuerst. Es liest einzelne Tage und das Wochenende mit Indizes und einem Slice, korrigiert einen Messwert, hängt den nächsten Tag an und legt dann zwei Wochen in eine verschachtelte Liste. Ändern Sie eine Temperatur und starten Sie erneut.
main.py
# Temperatures for one week, Monday first.
temps = [12, 14, 13, 17, 19, 21, 18]
print("Days:", len(temps))
print("Monday:", temps[0], "Sunday:", temps[-1])
print("Weekend:", temps[5:])
temps[3] = 16 # Thursday's reading was corrected
temps.append(15) # next Monday
print("Corrected:", temps)
weeks = [temps[:7], [9, 11, 10, 12, 14, 15, 13]]
print("Week 2, Tuesday:", weeks[1][1])
Ausführen mit
python main.pyAusgabe
Days: 7
Monday: 12 Sunday: 18
Weekend: [21, 18]
Corrected: [12, 14, 13, 16, 19, 21, 18, 15]
Week 2, Tuesday: 11Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.
Beim ersten Ausführen lädt Ihr Browser Python herunter (bis zu 6.5 MB) und speichert es im Cache. Ihr Code bleibt auf Ihrem Gerät.
Übung 1 von 2
scores = [72, 95, 88, 61, 79] enthält Testergebnisse in der Reihenfolge, in der sie geschrieben wurden. Geben Sie drei Zeilen aus: First: 72 Last: 79 Middle: [95, 88, 61] Count: 5 Die Mitte sind alle Ergebnisse außer dem ersten und dem letzten. Die Prüfungen probieren auch andere Listen.
Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.
Beim ersten Ausführen lädt Ihr Browser Python herunter (bis zu 6.5 MB) und speichert es im Cache. Ihr Code bleibt auf Ihrem Gerät.
scores[-1] ist der letzte Eintrag, egal wie lang die Liste ist.
scores[1:-1] beginnt beim zweiten Eintrag und endet vor dem letzten.
print("Count:", len(scores))
Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.
scores = [72, 95, 88, 61, 79]
print("First:", scores[0], "Last:", scores[-1])
print("Middle:", scores[1:-1])
print("Count:", len(scores))
Installieren Sie Python 3.14 oder neuer. Speichern Sie diese Dateien in einem Ordner, öffnen Sie dort ein Terminal und führen Sie die Befehle unten aus.
main.py
scores = [72, 95, 88, 61, 79]
# First: ... Last: ...
# Middle: ...
# Count: ...
print("First:", scores[0], "Last:", scores[4])
test_main.py
import re
from learnrun import run_main
def run_with(**values):
with open("main.py", encoding="utf-8") as f:
code = f.read()
for name, value in values.items():
code, count = re.subn(rf"^{name} = .*$", f"{name} = {value!r}", code, count=1, flags=re.M)
assert count == 1, f"main.py braucht oben die Zeile {name} = ..."
with open("variant.py", "w", encoding="utf-8") as f:
f.write(code)
return run_main(path="variant.py").strip()
def test_first_and_last():
"""Die erste Zeile zeigt das erste und das letzte Ergebnis"""
got = run_with(scores=[72, 95, 88, 61, 79]).splitlines()[:1]
assert got == ["First: 72 Last: 79"], f"die erste Zeile ist {got!r}, erwartet: ['First: 72 Last: 79']"
def test_middle_and_count():
"""Es folgen die mittleren Ergebnisse und die Anzahl"""
got = run_with(scores=[72, 95, 88, 61, 79]).splitlines()[1:]
assert got == ["Middle: [95, 88, 61]", "Count: 5"], f"Zeile 2 und 3 sind {got!r}"
def test_other_list():
"""Auch eine Liste mit drei Ergebnissen funktioniert"""
got = run_with(scores=[50, 60, 70]).splitlines()
assert got == ["First: 50 Last: 70", "Middle: [60]", "Count: 3"], f"bei [50, 60, 70] gab das Programm {got!r} aus"
Unter macOS und Linux tippen Sie python3, wo in diesen Befehlen python steht, wie in der ersten Lektion.
Programm ausführen:
python main.pyPrüfungen ausführen (learnrun.py muss im selben Ordner liegen):
python learnrun.py testlearnrun.py herunterladenÜbung 2 von 2
songs = ["Intro", "Blue", "Green"] ist eine Playlist. Ändern Sie sie direkt: Hängen Sie "Outro" an und ersetzen Sie dann den zweiten Song durch "Red". Geben Sie die Liste aus, danach Songs: und die Zahl der Songs. Für die Startliste ergibt das: ['Intro', 'Red', 'Green', 'Outro'] Songs: 4
Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.
Beim ersten Ausführen lädt Ihr Browser Python herunter (bis zu 6.5 MB) und speichert es im Cache. Ihr Code bleibt auf Ihrem Gerät.
songs.append("Outro") hängt den Song an dieselbe Liste an.
Der zweite Song hat den Index 1: songs[1] = "Red".
Ändern Sie zuerst die Liste und geben Sie sie danach aus, damit beide Änderungen zu sehen sind.
Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.
songs = ["Intro", "Blue", "Green"]
songs.append("Outro")
songs[1] = "Red"
print(songs)
print("Songs:", len(songs))
Installieren Sie Python 3.14 oder neuer. Speichern Sie diese Dateien in einem Ordner, öffnen Sie dort ein Terminal und führen Sie die Befehle unten aus.
main.py
songs = ["Intro", "Blue", "Green"]
# 1. Add "Outro" at the end.
# 2. Replace the second song with "Red".
print(songs)
print("Songs:", len(songs))
test_main.py
import re
from learnrun import run_main
def run_with(**values):
with open("main.py", encoding="utf-8") as f:
code = f.read()
for name, value in values.items():
code, count = re.subn(rf"^{name} = .*$", f"{name} = {value!r}", code, count=1, flags=re.M)
assert count == 1, f"main.py braucht oben die Zeile {name} = ..."
with open("variant.py", "w", encoding="utf-8") as f:
f.write(code)
return run_main(path="variant.py").strip()
def test_playlist():
"""Outro wird angehängt, und der zweite Song wird zu Red"""
got = run_with(songs=["Intro", "Blue", "Green"]).splitlines()[:1]
assert got == ["['Intro', 'Red', 'Green', 'Outro']"], f"die ausgegebene Liste ist {got!r}"
def test_count():
"""Die Anzahl zählt den neuen Song mit"""
got = run_with(songs=["Intro", "Blue", "Green"]).splitlines()[1:]
assert got == ["Songs: 4"], f"die zweite Zeile ist {got!r}, erwartet: ['Songs: 4']"
def test_other_playlist():
"""Auch eine Playlist mit zwei Songs funktioniert"""
got = run_with(songs=["A", "B"]).splitlines()
assert got == ["['A', 'Red', 'Outro']", "Songs: 3"], f"bei ['A', 'B'] gab das Programm {got!r} aus"
Unter macOS und Linux tippen Sie python3, wo in diesen Befehlen python steht, wie in der ersten Lektion.
Programm ausführen:
python main.pyPrüfungen ausführen (learnrun.py muss im selben Ordner liegen):
python learnrun.py testlearnrun.py herunterladenitems = ["a", "b"]
print(items[2])
Was Python ausgibt
IndexError: list index out of rangeWarum, und die Lösung
Eine Liste mit zwei Einträgen hat die Indizes 0 und 1. Nehmen Sie items[-1] für den letzten Eintrag oder len(items) - 1 als seinen Index. Einen dritten Eintrag fügen Sie mit append() hinzu; eine Zuweisung an items[2] führt zum selben Fehler.
items = ["a"]
items.push("b")
Was Python ausgibt
AttributeError: 'list' object has no attribute 'push'Warum, und die Lösung
Python-Listen haben keine Methode push. Die Methode, die am Ende anhängt, heißt append: items.append("b").
items = ["a", "b"]
items = items.append("c")
print(items[0])
Was Python ausgibt
TypeError: 'NoneType' object is not subscriptableWarum, und die Lösung
append() ändert die Liste selbst und liefert None. Weisen Sie dieses Ergebnis items zu, ist die Liste weg, und items[0] scheitert, weil None keine Einträge hat. Rufen Sie es in einer eigenen Zeile auf: items.append("c").
Python im Browser: Pyodide 314.0.7, MPL-2.0. Lizenz und Quellcode
5 Fragen, ohne Hinweise. Ab 80 % ist die Lektion abgeschlossen.
Erledigen Sie zuerst alle Aufgaben oben, um das Abschlussquiz freizuschalten.