Frage zu einer Abfrage in Python?
Ich habe eine Aufgabe, bei der ich für turtle eine Koordinatenabfrage machen muss.
Wenn die Koordinaten maximal 100 Schritte von der ist-position weg sind, soll die turtle dort hin.
wenn nicht, soll Sie auf die koordinaten (0, 0)
Wo ist bei meiner Funktion der Fehler, dass er einfach nur die Punkte ohne die Abfrage abfährt?
hier der Code:
punkte_liste = [(50, -50), (-30, -50), (100, 100), (40, 20), (60, 20), (200, 10), (-40, -50)]
from turtle import *
koordinate=()
def gehe_wenn_nah(koordinate):
for koordinate in punkte_liste:
if distance(position(), koordinate) < (100):
goto(koordinate)
elif distance(position(), koordinate) >= (100):
setpos(0, 0)
gehe_wenn_nah(koordinate)
Grüße
1 Antwort
Hier scheinen viele Informationen zu fehlen, zumindest in dem Code, den du hier abbildest.
Bitte lade mal die vollständige Aufgabe hoch. Aber hier ein paar Punkte:
- koordinate=() | Was soll das sein? die Variable 'koordinate' ist hier einfach ein leerer Vektor/Liste. Hier fehlt die 0,0, geht zumindest aus deinem obigen Text hervor
- if distance(position(), koordinate) < (100): | Das kann so nicht funktionieren, da distance per Definition entweder ein Element benötigt distance(x) wenn x selbst ein Vektor ist, oder 2 Elemente hat, wenn x kein Vektor ist, dann also distance(x,y). position liefert aber selbst bereits 2 Elemente (Vektor), daher schmeißt die Zeile direkt einen Fehler.
Ich verstehe daher nicht ganz warum dein Programm überhaupt irgendetwas tut ;) Deshalb bitte einmal alles hochladen.
Hier die Aufgabenstellung:
Schreibe eine Funktion gehe_wenn_nah(koordinate), die einen Punkt übergeben bekommt und prüft, ob dieser weniger als 100 Schritte von ihrem aktuellen Standort entfernt ist. Wenn ja, geht sie zu diesem Punkt, wenn nicht, geht sie zu dem Punkt (0, 0).
Abschließend bekommt sie eine Liste mit Punkten namens punkte_liste übergeben und soll die Funktion gehe_wenn_nah(koordinate) nacheinander für jeden Wert in dieser Liste aufrufen.
Dann ist der Aufruf deiner Funktion falsch. Du solltest sie so aufstellen:
punkte_liste = [...]
def gehe_wenn_nah(xy):
....
for koordinate in punkte_liste:
gehe_wenn_nah(koordinate)
Vielen Dank. Jetzt funktioniert die Abfrage.
mit koordinate=() definiere ich doch, dass die ausgabe der forschleife eine liste ist, oder?
dann passt meine if abfrage anscheinend ja nicht. muss ich da quasi einfach in der Klammer nur die gewünschte koordinate angeben und er holt sich die position automatisch von der jetzigen?
Kann es gerade leider nicht testen, da ich nicht am Rechner zuhause bin.
das ist der komplette Code, wie er bei mir im VScode steht.
damit fährt er dann einfach die punkte der liste nach und nach ab.