LU08c - Logikfehler suchen

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.

Programmabsturz

Wenn ein Programm unerwartet beendet wird, sprechen wir von einem Absturz.

Die meisten Programmabstürze geschehen, weil in einer Variable ein unerwarteter Wert steht:

Stack Trace

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:

Beispiel

Ich führe mein Programm aus und gebe als gewüschten Betrag 13 ein.

  1. def main():
  2.  
  3. input_string = input("Gewünschter Betrag > ")
  4. amount = int(input_string)
  5. give_bills(amount)
  6.  
  7.  
  8. def give_bills(amount):
  9. bills = [200, 100, 75, 25, 3]
  10. index = 0
  11. while amount > 0:
  12. if bills[index] > amount:
  13. index += 1
  14. else:
  15. print(str(bills[index]) + ' KD')
  16. amount = amount - bills[index]
  17.  
  18.  
  19. if __name__ == '__main__':
  20. main()

Das Programm stürzt ab und zeigt mir diesen Stacktrace:

Lesen Sie den Stacktrace von unten nach oben:


Marcel Suter