Die Summe ist immer zu niedrig
Der Support meldet: Mehrere Personen sagen, ihr Warenkorb sei zu billig berechnet. Es fehlt immer ein Artikel.
Sie sehen keine Fehlermeldung. Das Programm läuft, nur die Zahl stimmt nicht. Wer hier wild Zeilen ändert, macht es schlimmer. Wer ruhig eine Sache nach der anderen prüft, findet den Fehler.
Am Ende dieser Lektion
Notiz
Ich kann einen Fehler finden, indem ich jeweils nur eine Sache prüfe.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Bug | ein Fehler im Code | |
| Fehlermeldung | der Text, mit dem Python einen Absturz erklärt | |
| Traceback | die Liste der Stellen, die zum Absturz führten | |
| Ausgabe | ein Wert, den Sie mit print sichtbar machen | print(summe) |
| Halbieren | den verdächtigen Code in zwei Teile teilen und einen prüfen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Lesen Sie die Fehlermeldung von unten
Eine Fehlermeldung wirkt lang. Die wichtigste Zeile steht aber ganz unten.
Sie nennt die Art des Fehlers und oft den Grund. Darüber steht der Weg dorthin, mit Dateiname und Zeile. Lesen Sie von unten nach oben: erst was, dann wo.
Ausprobieren: eine Meldung lesen
def durchschnitt_wartezeit(wartezeiten):
# Minuten, die jedes Support-Ticket auf die erste Antwort gewartet hat.
summe = 0
for zeit in wartezeiten:
summe = summe + zeit
return summe / len(wartezeiten)
print(durchschnitt_wartezeit([12, 30, 18]))
print(durchschnitt_wartezeit([]))
# Drücken Sie Run. Lesen Sie zuerst die letzte Zeile der Fehlermeldung.
# Ändern Sie dann die Funktion so, dass eine leere Liste 0 ergibt.
Ohne Fehlermeldung: Werte sichtbar machen
Manchmal stürzt nichts ab, und das Ergebnis ist trotzdem falsch. Dann raten Sie nicht.
Schreiben Sie mit print die Werte aus, die Sie verdächtigen. Vergleichen Sie jeden mit dem, was Sie erwarten. Die erste Zeile, die nicht stimmt, zeigt Ihnen die Stelle.
Ein häufiger Fehler
Warnung
Viele denken, es gehe schneller, mehrere Zeilen auf einmal zu ändern. Dann wissen Sie nicht, welche Änderung geholfen hat, und Sie können neue Fehler einbauen. Ändern Sie eine Sache und prüfen Sie dann.
Üben: mit print den Fehler zeigen
def arbeitsstunden(schichten):
# Jede Schicht ist [Beginn, Ende] in Stunden auf der 24-Stunden-Uhr.
summe = 0
for schicht in schichten:
beginn = schicht[0]
ende = schicht[1]
summe = beginn - ende
return summe
woche = [[9, 17], [9, 13], [12, 20]]
print("Stunden diese Woche:", arbeitsstunden(woche))
# Das Ergebnis müsste 20 sein. Fügen Sie diese Zeile in die Schleife ein:
# print("beginn", beginn, "ende", ende, "summe", summe)
# Drücken Sie Run, lesen Sie jede Zeile und beheben Sie die zwei Fehler.
Halbieren Sie das Problem
Eine Funktion mit 40 Zeilen hat einen Fehler. Prüfen Sie den Wert in der Mitte.
Stimmt er schon, steckt der Fehler in der zweiten Hälfte. Stimmt er nicht, in der ersten. Mit jedem Schritt scheiden Sie die Hälfte aus. Nach sechs Schritten haben Sie eine einzelne Zeile.
Beispiel: 40 Zeilen, ein Fehler
| Schritt | Sie prüfen | Ergebnis | Fehler steckt in |
|---|---|---|---|
| 1 | Wert nach Zeile 20 | Falsch | Zeile 1 bis 20 |
| 2 | Wert nach Zeile 10 | Richtig | Zeile 11 bis 20 |
| 3 | Wert nach Zeile 15 | Falsch | Zeile 11 bis 15 |
| 4 | Wert nach Zeile 13 | Richtig | Zeile 14 bis 15 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.