Debuggen mit KI

Debuggen mit KI#

In der Programmierung gibt es viele Wege, um Fehler zu finden und zu beheben. Während klassische Debugging-Techniken wie \(\texttt{print}\)-Anweisungen oder gezieltes Testen weiterhin essenziell sind, eröffnen KI-gestützte Tools neue Möglichkeiten. Sie können nicht nur Fehler identifizieren, sondern auch Lösungsvorschläge liefern und Alternativen aufzeigen.

In diesem Kapitel untersuchen wir, wie Sie vorhandenen Code – sei es Ihr eigener, der eines Kommilitonen oder von einer KI generierter – mithilfe von KI-Tools verbessern und debuggen können. Dabei sollten Sie stets folgende Aspekte beachten:

  • Bevor Sie eine KI um Hilfe bitten, sollten Sie genau wissen, was nicht funktioniert. Welche Art von Fehler tritt auf? Ist es ein \(\texttt{SyntaxError}\) oder ein \(\texttt{RuntimeError}\)?

  • Formulieren Sie Ihr Problem präzise. Geben Sie der KI beispielsweise den Fehlercode oder eine Beschreibung der unerwarteten Ausgabe.

  • Achten Sie darauf, ob die Vorschläge der KI logisch nachvollziehbar sind und in Ihren spezifischen Kontext passen.

  • Nachdem Sie eine Änderung implementiert haben, testen Sie den Code erneut.

  • Lassen Sie sich Erklärungen zu vorgeschlagenen Änderungen der KI geben und überlegen Sie, was Sie daraus für zukünftige Programmieraufgaben mitnehmen können.

Im Folgenden wenden Sie diese Prinzipien direkt an: Sie erhalten ein fehlerhaftes Programm und haben die Aufgabe, es mithilfe einer KI zu analysieren und zu korrigieren.

Das RPG-Spiel#

Wir habe die Spielregel des RPG-Spiels aus dem Kaptiel Programmieren mit KI an eine KI übergeben. Nun wollen wir herausfinden ob der Code korrekt ist. Zum Vergleich geben wir Ihnen nocheinmal das Regelwerk an die Hand:

  • Es gibt zwei Spieler: Der „Spieler“ und der „Gegner“.

  • Jeder Spieler hat 100 Lebenspunkte, die nicht überschritten werden können.

  • Der Gegner greift in jedem Zug an, was zufälligen Schaden zwischen 5 und 25 Punkten anrichtet.

  • Der Spieler entscheidet, ob er angreifen oder sich heilen möchte.

    • Heilen: Der Spieler heilt sich um 0 bis 30 Punkte.

    • Angriff: Der Spieler fügt dem Gegner zwischen 5 und 25 Punkten Schaden zu.

  • Der Spieler macht zuerst seinen Zug

  • Der Kampf geht weiter, bis einer der beiden Spieler 0 Lebenspunkte erreicht.

  • Am Ende des Kampfes soll angezeigt werden, wer gewonnen hat und wie lange der Kampf gedauert hat.

Aufgabe 1.1

Schauen Sie, ob der Code fehlerfrei durchläuft. Falls nicht, passen Sie gegebenenfalls die Stellen an.

# Code von Chatgpt
import numpy as np

spieler_lp = 100  # Lebenspunkte Spieler
gegner_lp = 100  # Lebenspunkte Gegner
runden = 0  # Zählt die Anzahl der Runden

print("Willkommen zum Kampf!")

while spieler_lp > 0 and gegner_lp > 0:
    runden += 1
    print(f"\n--- Runde {runden} ---")
    print(f"Deine LP: {spieler_lp} | Gegner LP: {gegner_lp}")

    # Spieleraktion
    aktion = input("Möchtest du (a)ngreifen oder (h)eilen? ").strip().lower()
    if aktion == "a":
        schaden = np.random.randint(5, 25)
        gegner_lp -= schaden
        print(f"Du greifst an und verursachst {schaden} Schaden!")
    elif aktion == "h":
        heilung = np.random.randint(0, 30)
        spieler_lp += heilung
        print(f"Du heilst dich um {heilung} Lebenspunkte!")
    else:
        print("Ungültige Eingabe. Du verlierst deinen Zug!")

    # Gegneraktion
    gegner_schaden = np.random.randint(5, 25)
    spieler_lp -= gegner_schaden
    print(f"Der Gegner greift dich an und verursacht {gegner_schaden} Schaden!")

    if spieler_lp <= 0:
        print("Du wurdest besiegt! Spiel vorbei.")
        break

print(f"Der Kampf dauerte {runden} Runden.")

Zahlen raten#

Das nächste Programm setzt auch eine kleines Spiel um, bei dem die Nutzerin oder der Nutzer eine zufällig gewählte Zahl erraten muss.

Aufgabe 1.2

Nutzen Sie die Unterstützung einer KI, um den folgenden fehlerhaften Python-Code zu analysieren und zu korrigieren.

import random

def guess_number():
    number_to_guess = random.randint(1, 10)
    attempts = 3

    print("Willkommen zum Zahlenratenspiel! Erraten Sie eine Zahl zwischen 1 und 10.")

    while attempts > 0
        guess = input("Ihre Vermutung: ")  
        guess = int(guess)  

        if guess = number_to_guess:  
            print("Glückwunsch! Sie haben die richtige Zahl erraten.")  
            break  
        elif guess > number_to_guess:  
            print("Die gesuchte Zahl ist kleiner.")  
        else  
            print("Die gesuchte Zahl ist größer.")  

        attempts -= 1  
        print("Versuche übrig: " + attempts)  

    if attempts = 0:  
        print("Leider verloren! Die richtige Zahl war: ", number_to_guess)  

guess_number()