Logikfehler treten erst beim Ausführen meines Programms auf. Das Programm produziert einen Absturz oder ein falsches Resultat.
Im Gegensatz zu Syntaxfehlern zeigt mir meine IDE zunächst keinen Hinweis auf den fehlerhaften Code. Ich muss solche Fehler zunächst erkennen, die Ursache ermitteln und beheben.
Wenn ein Programm unerwartet beendet wird, sprechen wir von einem Absturz.
Die meisten Programmabstürze geschehen, weil in einer Variable ein unerwarteter Wert steht:
Stürzt ein Programm ab, so erzeugt das System einen sogenannten Stack Trace. Dieser Stack Trace enthält wichtige Angaben zur Suche nach der Ursache:
Ich führe mein Programm aus und gebe als gewüschten Betrag 13 ein.
def main(): input_string = input("Gewünschter Betrag > ") amount = int(input_string) give_bills(amount) def give_bills(amount): bills = [200, 100, 75, 25, 3] index = 0 while amount > 0: if bills[index] > amount: index += 1 else: print(str(bills[index]) + ' KD') amount = amount - bills[index] if __name__ == '__main__': main()
Das Programm stürzt ab und zeigt mir diesen Stacktrace:
Lesen Sie den Stacktrace von unten nach oben:
list index out of range
/ Ich versuche auf ein Element einer Liste zuzugreifen, das nicht exisiert.if bills[index] > amount:
give_bills
.give_bills
wurde in Zeile 5 der Funktion main
aufgerufen main
wurde in Zeile 20 aufgerufen.