Menu

Code erklären lassen mit KI: Zeile für Zeile

Lass dir Code von einer KI Zeile für Zeile erklären, auf deinem Niveau, mit einer Tabelle, wie sich die Werte beim Ausführen ändern. Sag, was du schon weißt, damit die Erklärung dort anfängt, wo du stehst.

Jeder Prompt auf dieser Seite lässt sich bearbeiten und danach in ChatGPT, Claude oder einer anderen KI-App öffnen.

Um von einer KI eine nützliche Erklärung zu Code zu bekommen, sag, wie viel du schon weißt, bitte um eine Erklärung Zeile für Zeile und bitte um einen Trace: eine Tabelle der Werte, die jede Variable beim Ausführen des Codes hat. Ein bloßes "erkläre diesen Code" bringt eine Zusammenfassung für einen gedachten Durchschnittsleser, und die ist für dich meist entweder zu simpel oder zu schnell.

Zeile für Zeile, mit einem Trace der Werte

Die beiden Tabs fragen nach derselben kurzen Funktion. Vergleich, was dich jede Antwort prüfen lässt.

Erkläre diesen Code: def running_max(nums): result = [] best = None for n in nums: if best is None or n > best: best = n result.append(best) return result print(running_max([3, 1, 4, 1, 5]))
Try it
Example replyReplies vary between models and runs.

Diese Funktion berechnet das laufende Maximum einer Liste. Sie geht die Zahlen durch, merkt sich in best den größten bisher gesehenen Wert und hängt diesen Wert bei jedem Schritt an result an. Die Prüfung best is None behandelt das erste Element. Der Aufruf gibt [3, 3, 4, 4, 5] aus.

Die Funktion läuft in O(n) Zeit, da sie jedes Element einmal besucht.

Die erste Antwort ist korrekt, hilft aber nur, wenn du schon weißt, was ein laufendes Maximum ist. Außerdem hängt sie eine Bemerkung zur Zeitkomplexität an, nach der niemand gefragt hat, die Art Zugabe, die du bekommst, wenn das Modell nicht weiß, wer liest. Die zweite Antwort bindet jeden Satz an eine Zeile, auf die du zeigen kannst, und die Tabelle macht konkret, was die Zusammenfassung nur nebenbei erwähnt: result.append(best) läuft bei jedem Durchlauf, auch bei denen, in denen sich best nicht ändert. Deshalb erscheint 3 zweimal, und du siehst das in Zeile 2, statt es aus "bei jedem Schritt" ableiten zu müssen.

Eine Trace-Tabelle ist außerdem eine Prüfung der Erklärung selbst. Du kannst jede Zeile verifizieren, indem du den Code mit einem print(n, best, result) in der Schleife ausführst. Wenn eine Zeile nicht zur echten Ausgabe passt, ist die Erklärung irgendwo falsch, und jetzt weißt du, wo.

Lass es dir auf deinem Niveau erklären

Die nützlichste einzelne Zeile in einem Erklär-Prompt ist die, was du schon weißt. Sie sagt dem Modell, welche Zeilen es überspringen und bei welchen es langsamer werden soll. Ein Rollensatz kann auch helfen ("Du bist Tutor für Leute in ihrem ersten Monat Programmieren"), aber er wirkt über denselben Mechanismus: Er sagt dem Modell, wer liest. Rollen-Prompting zeigt, was eine Rolle ändert und was nicht.

Dieser Block ist eine wiederverwendbare Version. Ändere das Niveau, den verwirrenden Teil oder den Code, und die Erklärung ändert sich mit.

Auf meinem Niveau erklären
Fill in
Parts
Erkläre mir den Code unten.
Mein Niveau: Ich kenne Schleifen, Listen und Dictionaries, aber nicht lambda und sorted mit key. Der Teil, der mich verwirrt: die letzten beiden Zeilen.
text = "the cat and the hat" counts = {} for word in text.split(): counts[word] = counts.get(word, 0) + 1 top = sorted(counts.items(), key=lambda kv: kv[1], reverse=True)[:2] print(top)
Erkläre die Zeilen, die ich schon verstehe, in insgesamt einem Satz. Verwende den Rest auf den verwirrenden Teil, Stück für Stück, und zeig den Wert, den jedes Stück für diesen Input liefert.
Unter 180 Wörtern. Verwende nur die Konzepte aus meinem Niveau plus die, die du gerade erklärst.
Try it
Example replyReplies vary between models and runs.

Die Schleife zählt jedes Wort: counts endet als {'the': 2, 'cat': 1, 'and': 1, 'hat': 1}.

Jetzt die letzten beiden Zeilen, von innen nach außen:

  • counts.items() liefert die Paare ('the', 2), ('cat', 1), ('and', 1), ('hat', 1).
  • lambda kv: kv[1] ist eine winzige Funktion ohne Namen. Sie nimmt ein Paar und gibt sein zweites Element zurück, die Anzahl. Für ('the', 2) gibt sie 2 zurück.
  • sorted(..., key=...) sortiert die Paare nach dem, was diese Funktion zurückgibt, also nach der Anzahl. reverse=True setzt die größte zuerst. Wörter mit gleicher Anzahl behalten ihre ursprüngliche Reihenfolge.
  • [:2] behält die ersten zwei Paare.

top ist also [('the', 2), ('cat', 1)], und genau das wird ausgegeben.

"Gleiche Anzahl behält die ursprüngliche Reihenfolge" ist das Detail, das eine schnelle Erklärung weglässt, und es ist der Grund, warum cat den zweiten Platz bekommt und nicht and oder hat. Pythons sorted ist stabil, und reverse=True erhält diese Stabilität. Du würdest nicht daran denken, danach zu fragen, und erst die Bitte um "den Wert, den jedes Stück für diesen Input liefert", hat es ans Licht gebracht.

Frag nach einem Teil, nicht nach der ganzen Datei

Eine Datei mit 500 Zeilen einzufügen und zu fragen "was macht das" bringt eine Führung durch die Struktur der Datei. Wenn du bei einer Funktion festhängst, füg diese Funktion und die Zeilen ein, die sie aufrufen, und frag direkt danach: "Warum kehrt diese Funktion früh zurück, wenn die Liste leer ist?" oder "Was macht yield in Zeile 12, und was würde sich ändern, wenn dort return stünde?" Eine enge Frage bringt eine Antwort zu deinem Code; eine breite bringt eine Antwort zu Code, der so ähnlich ist wie deiner.

Bei einer großen, unbekannten Codebasis dreh es um: Bitte zuerst um eine Karte ("liste die wichtigsten Module auf und wofür jedes zuständig ist, je eine Zeile"), dann frag nach dem Modul, das du brauchst. Das ist eine kleine Prompt-Kette, und jeder Schritt hält die Antwort des Modells kurz genug zum Prüfen.

Lass es dir über eine Sprache erklären, die du kennst

Code in einer unbekannten Sprache liest sich leichter, wenn die Erklärung in einer Sprache verankert ist, die du kennst. Sag das im Prompt: "Ich kenne Python. Erkläre diese Go-Funktion und zeig jede Stelle, an der sie sich anders verhält, als eine Python-Programmiererin erwarten würde." In den Unterschieden stecken die Missverständnisse: Ganzzahldivision, Nullwerte statt None, ein Slice, der sich den Speicher mit dem Array teilt, aus dem er stammt. Eine einfache Erklärung des Go-Codes würde diese Zeilen korrekt beschreiben und dir nie sagen, dass dein Bauchgefühl bei ihnen falsch liegt.

Prüf, ob du es verstanden hast

Eine Erklärung, die du liest und der du zustimmst, kann dich trotzdem außerstande lassen, den Code selbst zu schreiben. Zwei Prompts schließen diese Lücke:

  • Erst vorhersagen. Bevor du den Code ausführst oder um eine Erklärung bittest, schreib auf, was er deiner Meinung nach ausgibt. Bitte das Modell dann, nur die Zeilen zu erklären, bei denen deine Vorhersage falsch war.
  • Zurückerklären. Schreib deine eigene Erklärung und bitte das Modell, alles Falsche oder Fehlende zu benennen, ohne sie umzuschreiben.
Frag mich zu diesem Code ab
Fill in
Ich habe gerade eine Erklärung zu diesem Python-Code gelesen: def running_max(nums): result = [] best = None for n in nums: if best is None or n > best: best = n result.append(best) return result Stell mir 3 Fragen, die prüfen, ob ich ihn wirklich verstehe, eine nach der anderen. Nimm eine Frage auf, bei der ich die Ausgabe für einen neuen Input vorhersagen muss. Warte auf meine Antwort, bevor du die nächste Frage stellst, und sag mir, ob meine Antwort richtig ist und warum.
Try it
Example replyReplies vary between models and runs.

Frage 1 von 3: Was gibt running_max([2, 7, 5, 9]) zurück? Rechne es aus, bevor du den Code ausführst.

Derselbe Ansatz funktioniert, wenn sich ein Programm falsch verhält, aber dann willst du die Ursache, keine Lektion: siehe Prompts zum Debuggen. Wenn der Code vor dir von einer KI geschrieben wurde, ist eine Erklärung Zeile für Zeile ein schneller Weg, ihn zu prüfen, bevor du ihn behältst; Prompts zum Code schreiben listet die weiteren Prüfungen auf.

Häufig gestellte Fragen

Wie bitte ich ChatGPT oder Claude, Code zu erklären?

Füg den Code ein und sag drei Dinge: was du schon weißt, welcher Teil dich verwirrt und in welcher Form du die Erklärung willst. "Erkläre jede Zeile in einem Satz und zeig dann eine Tabelle der Variablen nach jedem Schleifendurchlauf" bringt eine viel nützlichere Antwort als "erkläre diesen Code".

Was ist eine Trace-Tabelle?

Eine Trace-Tabelle verfolgt ein Programm beim Ausführen: eine Zeile pro Schritt (oft ein Schleifendurchlauf), eine Spalte pro Variable und der Wert jeder Variable an dieser Stelle. Wenn du um eine bittest, wird aus einer abstrakten Beschreibung eine Reihe konkreter Werte, die du mit dem Code abgleichen kannst. Sie ist das schriftliche Protokoll dessen, was dir ein Debugger zeigt, wenn du schrittweise durch ein Programm gehst.

Kann KI Code in einer Sprache erklären, die ich nicht kenne?

Ja, und das ist eine der nützlichsten Bitten überhaupt. Nenn eine Sprache, die du kennst, und bitte das Modell um einen Vergleich: "Ich kenne Python; erkläre diesen Rust-Code und zeig, wo er sich anders verhält als Python." Prüf die Aussagen über das Verhalten der Sprache mit kleinen Beispielen, denn Erklärungen können bei Details selbstsicher falsch sein.

Schadet es beim Lernen, sich Code von einer KI erklären zu lassen?

Das hängt davon ab, was du danach tust. Eine Erklärung zu lesen und weiterzumachen, bringt wenig. Die Ausgabe vorherzusagen, bevor du den Code ausführst, dich vom Modell abfragen zu lassen oder den Code selbst zu erklären und zu fragen, was daran falsch ist, zwingt dich zum Nachdenken, und dort passiert das Lernen.

Coddy programming languages illustration

Lerne mit Coddy zu programmieren

LOS GEHT'S