Laden Sie den Starter herunter und entpacken Sie ihn in einen neuen Ordner namens monkeycode-first-task. Behalten Sie die ZIP-Datei für einen Neustart.
Direkt im Ordner sollten intervals.py, retry.py, zwei Testdateien, README.md und TASKS.md liegen.
Python 3.10+
Für die erste lokale Prüfung braucht Ihr Computer Python 3.10+. Auch die MonkeyCode-Aufgaben-Umgebung braucht Python zur Prüfung der Korrektur. Das Beispiel nutzt nur die Standardbibliothek. Die manuelle lokale Ausführung benötigt weder Konto noch API-Schlüssel. Python herunterladen ↗
Öffnen Sie vor dem Import in MonkeyCode ein lokales Terminal im entpackten Ordner mit intervals.py und führen Sie diesen Befehl aus.
Prüfbefehl
python3 -m unittest discover -v
Wenn unter Windows python3 fehlt, aber der Python-Launcher installiert ist, ersetzen Sie python3 in allen Befehlen und im Auftrag durch py -3.
Erwartung vor der Korrektur
Ran 8 tests
FAILED (failures=1)
8 Tests laufen. Nur test_touching_is_not_overlap schlägt fehl. Das ist der vorgesehene Ausgangspunkt.
Steht dort „Ran 0 tests“? Prüfen Sie den Arbeitsordner. Null Tests bedeuten hier keinen erfolgreichen Durchlauf.
Dateien in MonkeyCode öffnen
Im Browser
Legen Sie die entpackten Beispieldateien in einem neuen eigenen GitHub-Repository ab.
Verbinden Sie in den MonkeyCode-Einstellungen Ihr GitHub-Konto und erlauben Sie Zugriff auf dieses Repository.
Erstellen Sie ein Projekt mit Namen, verbundenem Git-Konto und Beispiel-Repository.
Starten Sie eine Aufgabe für das Beispielprojekt. Prüfen Sie Repository und Modell und fügen Sie den Auftrag unten in das Eingabefeld ein.
Starten Sie eine lokale Aufgabe im Beispielordner. Prüfen Sie Ordner und Modell und fügen Sie den Auftrag unten in das Eingabefeld ein.
In MonkeyCode einfügen
Behebe den Fehler für halboffene Intervalle in intervals.py: (1, 3) und (3, 5) dürfen sich nicht überschneiden. Ändere nur intervals.py und schwäche keine Tests ab. Führe python3 -m unittest discover -v aus. Berichte Diff, genauen Befehl und Ergebnis. Fertig: alle 8 vorhandenen Tests bestehen, auch berührende, leere und umgekehrte Intervalle.
Warten Sie auf den Abschluss und prüfen Sie geänderte Dateien und Testausgabe. Behalten Sie die ursprünglichen Tests.
04
Ergebnis prüfen
Führen Sie denselben Prüfbefehl erneut aus und lesen Sie den Diff. Entscheiden Sie anhand dieser drei Kriterien über die Änderung.
Prüfbefehl
python3 -m unittest discover -v
✓Nur intervals.py wurde bearbeitet. Automatisch erzeugte Cache-Dateien zählen nicht als Quellcodeänderungen.
✓Die ursprünglichen Tests sind unverändert; alle 8 bestehen, auch berührende, leere und umgekehrte Intervalle.
✓Die Aufgabe nennt Änderung, genauen Befehl und Ergebnis.
Erwartung nach der Korrektur
Ran 8 tests
OK
Prüfen Sie die Testanzahl und „OK“. Eine andere korrekte Implementierung ist ebenfalls zulässig, wenn sie die Anforderungen erfüllt.
↗
Alle drei Kriterien erfüllt? Ihre erste Aufgabe ist fertig.
Sie haben ein Projekt geöffnet, eine gezielte Änderung angefordert und das Ergebnis selbst geprüft. Speichern Sie den Diff vor der nächsten Aufgabe.
Bei Bedarf: zwei weitere Aufgaben
TASKS.md enthält zwei optionale Übungen. Führen Sie sie getrennt aus und vergleichen Sie jede Änderung mit dem vorherigen Stand.
Vier Tests für Wiederholungsregeln hinzufügen, ohne retry.py zu ändern. Danach sollen 12 Tests bestehen.
Nur README.md um „How it works“ ergänzen, ohne Code zu ändern. Alle 12 Tests sollen weiterhin bestehen.
Referenzlösung und Prüfausgaben+
Erst ausprobieren, dann vergleichen. Diese lokal geprüften Dateien zeigen das erwartete Verhalten; sie sind kein aufgezeichneter MonkeyCode-Lauf.
Vorher · ein Test schlägt fehlreturn a[0] <= b[1] and b[0] <= a[1]
[1, 3) + [3, 5) → True
Nachher · acht Tests bestandenreturn a[0] < b[1] and b[0] < a[1]
[1, 3) + [3, 5) → False
Die Ergebnisse stammen aus einem lokal von Codex erstellten und geprüften Referenzbeispiel. Es ist kein MonkeyCode-Produktlauf oder Kundenbenchmark; Zeit, Tokenkosten und Agenten-Erfolgsraten werden nicht behauptet.
1. Fehler beheben
Berührende Intervalle überschneiden sich nicht. Nur intervals.py ändert sich.
Protokoll und Diff öffnen
--- a/intervals.py
+++ b/intervals.py
@@ -2,4 +2,4 @@
def overlaps(a, b):
if a[0] >= a[1] or b[0] >= b[1]:
return False
- return a[0] <= b[1] and b[0] <= a[1]
+ return a[0] < b[1] and b[0] < a[1]
test_empty (test_intervals.IntervalTests.test_empty) ... ok
test_reversed (test_intervals.IntervalTests.test_reversed) ... ok
test_separated (test_intervals.IntervalTests.test_separated) ... ok
test_shared_interior (test_intervals.IntervalTests.test_shared_interior) ... ok
test_touching_is_not_overlap (test_intervals.IntervalTests.test_touching_is_not_overlap) ... ok
test_budget (test_retry.RetryTests.test_budget) ... ok
test_success (test_retry.RetryTests.test_success) ... ok
test_transient (test_retry.RetryTests.test_transient) ... ok
----------------------------------------------------------------------
Ran 8 tests in 0.000s
OK
2. Tests ergänzen
Vier Tests prüfen Limits, permanente Fehler, Versuchsgrenzen und ungültige Werte.
test_empty (test_intervals.IntervalTests.test_empty) ... ok
test_reversed (test_intervals.IntervalTests.test_reversed) ... ok
test_separated (test_intervals.IntervalTests.test_separated) ... ok
test_shared_interior (test_intervals.IntervalTests.test_shared_interior) ... ok
test_touching_is_not_overlap (test_intervals.IntervalTests.test_touching_is_not_overlap) ... ok
test_before_budget (test_retry.AddedRetryTests.test_before_budget) ... ok
test_invalid_attempts (test_retry.AddedRetryTests.test_invalid_attempts) ... ok
test_permanent_error (test_retry.AddedRetryTests.test_permanent_error) ... ok
test_rate_limit (test_retry.AddedRetryTests.test_rate_limit) ... ok
test_budget (test_retry.RetryTests.test_budget) ... ok
test_success (test_retry.RetryTests.test_success) ... ok
test_transient (test_retry.RetryTests.test_transient) ... ok
----------------------------------------------------------------------
Ran 12 tests in 0.000s
OK
3. Code erklären
Die README erklärt beide Module und behält den Prüfaufruf.
Protokoll und Diff öffnen
--- a/README.md
+++ b/README.md
@@ -9,3 +9,11 @@
```
The initial interval test intentionally fails. Work on a copy.
+
+## How it works
+
+- `intervals.py` checks half-open intervals: touching endpoints do not overlap.
+- Empty or reversed intervals never overlap.
+- `retry.py` retries 408, 429, 500, 502, 503 and 504 responses only.
+- A retry is allowed only while `attempt < max_attempts`; attempts start at 1.
+- Non-positive attempt values or budgets raise `ValueError`.
test_empty (test_intervals.IntervalTests.test_empty) ... ok
test_reversed (test_intervals.IntervalTests.test_reversed) ... ok
test_separated (test_intervals.IntervalTests.test_separated) ... ok
test_shared_interior (test_intervals.IntervalTests.test_shared_interior) ... ok
test_touching_is_not_overlap (test_intervals.IntervalTests.test_touching_is_not_overlap) ... ok
test_before_budget (test_retry.AddedRetryTests.test_before_budget) ... ok
test_invalid_attempts (test_retry.AddedRetryTests.test_invalid_attempts) ... ok
test_permanent_error (test_retry.AddedRetryTests.test_permanent_error) ... ok
test_rate_limit (test_retry.AddedRetryTests.test_rate_limit) ... ok
test_budget (test_retry.RetryTests.test_budget) ... ok
test_success (test_retry.RetryTests.test_success) ... ok
test_transient (test_retry.RetryTests.test_transient) ... ok
----------------------------------------------------------------------
Ran 12 tests in 0.000s
OK
Referenzarchiv entpacken und im obersten Ordner python3 verify.py ausführen. Temporäre Kopien prüfen den beabsichtigten Fehler, die Änderungen, Dokumentation und eine Mutation. Die veröffentlichten Lösungen eignen sich nicht für einen Blindtest.
Prüfbefehl
python3 verify.py
Brauchen Sie Hilfe?
Brauche ich ein Konto oder einen API-Schlüssel?
Die lokale Python-Übung selbst benötigt beides nicht. Für MonkeyCode braucht der gehostete Dienst ein Konto und verfügbare Modellnutzung; die Desktop-App benötigt ein nutzbares Konto oder eine konfigurierte Modellverbindung.
Was tun, wenn Python fehlt?
Installieren Sie Python 3.10 oder neuer in der Testumgebung und prüfen Sie python3 --version. Mit dem Windows-Python-Launcher nutzen Sie py -3 --version und ersetzen python3 in Befehlen und Auftrag durch py -3.
Warum schlägt die erste Prüfung fehl?
Der Starter enthält absichtlich einen Grenzfallfehler. Von 8 Tests soll nur test_touching_is_not_overlap fehlschlagen. Bei null Tests oder anderen Fehlern prüfen Sie zuerst Ordner, Python und Starterdateien.
Warum fehlt mein GitHub-Repository?
Prüfen Sie das verbundene GitHub-Konto und die Repository-Berechtigungen der App. Organisations-Repositories benötigen eventuell eine Freigabe des Eigentümers. Aktualisieren Sie die Auswahl nach Berechtigungsänderungen.
Was tun, wenn der Fehler nicht behoben wird?
Bewahren Sie die Fehlerausgabe auf und fordern Sie eine Korrektur im gleichen Dateiumfang an. Wurden Tests oder fremde Quelldateien geändert, beginnen Sie mit einer frisch entpackten Kopie. Akzeptieren Sie das Ergebnis erst, wenn die 8 ursprünglichen Tests bestehen.
Wir verwenden Cookies nur für Analysen (GA4 + Matomo) zur Verbesserung der Doku. Keine Werbung, kein Cross-Site-Tracking.