'Vec2D' object is not callable , turtle position in for item in Schleife, Anfänger

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
JonasToGo
User
Beiträge: 2
Registriert: Montag 15. Januar 2018, 16:22

Ich versuche gerade eine Art unendlichen Baum zu programmieren (drei Linien die sich wieder in drei teilen usw.) Bisher hatte ich vor an jeder Gabelung eine Punkt in die Liste hinzuzufügen aber in meinem ersten Script wurde mir nur "Can´t assign to function call" angezeigt. Deshalb habe ich nochmal versucht mir die Position einfach nur anzeigen zu lassen. Da wurde dann nur "TypeError: 'Vec2D' object is not callable" angezeigt. Ich bin ein totaler Anfänger und mir ist auch bewusst das dieser "Baum" total sinnlos ist und das ganze alles andere als elegant gelöst ist aber irgendwo muss man mal anfangen. Danke Schonmal im voraus!

Code: Alles auswählen

from turtle import *

def zurueckgabelung (laenge):
        forward (laenge)
        left (45)
        forward (laenge)
        backward (laenge)
        right (45)
        forward(laenge)
        backward (laenge)
        right (45)
        forward(laenge)
        backward (laenge)
        left (45)
left (90)
def baum (laenge,anzahlwiederh):
    for i in range(anzahlwiederh):
        forward (laenge)
        left (45)
        forward (laenge)
        backward (laenge)
        right (45)
        forward(laenge)
        backward (laenge)
        right (45)
        forward(laenge)
        backward (laenge)
        left (45)
        zwischenzahl = 0
        zwischenzahl2 = zwischenzahl + 1
        zwischenzahl3 = str (zwischenzahl2)
        zwischenzahl3 = pos()
        position = zwischenzahl3
        zwischenzahl2 = zwischenzahl
        nächstegen = True
        positionsliste = [position]
        
        for item in positionsliste :
            goto (item)
            right (45)
            forward (laenge)
            left (45)
            forward (laenge)
            backward (laenge)
            right (45)
            forward(laenge)
            backward (laenge)
            right (45)
            forward(laenge)
            backward (laenge)
            left (45)
            backward (laenge)
            position () = positio
            position1 = positionsliste[0]
            
            left (45)
            forward (laenge)
            left (45)
            forward (laenge)
            backward (laenge)
            right (45)
            forward(laenge)
            backward (laenge)
            right (45)
            forward(laenge)
            backward (laenge)
            left (45)
            position () = position2
            position2 = positionsliste[1]

            backward (laenge)
            left (45)
            forward (laenge)
            left (45)
            forward (laenge)
            backward (laenge)
            right (45)
            forward(laenge)
            backward (laenge)
            right (45)
            forward(laenge)
            backward (laenge)
            position () = position3
            position3 = positionsliste[2]
            
            left (45)
            backward (laenge)
            


            

baum (100,1)
print ("sucess")

2.Version, die die Koordinaten einfach nur anzeigen soll:

Code: Alles auswählen

from turtle import *

def zurueckgabelung (laenge):
        forward (laenge)
        left (45)
        forward (laenge)
        backward (laenge)
        right (45)
        forward(laenge)
        backward (laenge)
        right (45)
        forward(laenge)
        backward (laenge)
        left (45)
left (90)
def baum (laenge,anzahlwiederh):
    for i in range(anzahlwiederh):
        forward (laenge)
        left (45)
        forward (laenge)
        backward (laenge)
        right (45)
        forward(laenge)
        backward (laenge)
        right (45)
        forward(laenge)
        backward (laenge)
        left (45)
        zwischenzahl = 0
        zwischenzahl2 = zwischenzahl + 1
        zwischenzahl3 = str (zwischenzahl2)
        zwischenzahl3 = pos()
        position = zwischenzahl3
        zwischenzahl2 = zwischenzahl
        nächstegen = True
        positionsliste = [position]
        print (positionsliste)
        for item in positionsliste :
            goto (item)
            right (45)
            forward (laenge)
            left (45)
            forward (laenge)
            backward (laenge)
            right (45)
            forward(laenge)
            backward (laenge)
            right (45)
            forward(laenge)
            backward (laenge)
            left (45)
            backward (laenge)
            
            print (position ())
            
            
            left (45)
            forward (laenge)
            left (45)
            forward (laenge)
            backward (laenge)
            right (45)
            forward(laenge)
            backward (laenge)
            right (45)
            forward(laenge)
            backward (laenge)
            left (45)
            print (position ())

            backward (laenge)
            left (45)
            forward (laenge)
            left (45)
            forward (laenge)
            backward (laenge)
            right (45)
            forward(laenge)
            backward (laenge)
            right (45)
            forward(laenge)
            backward (laenge)
            print (position ())
            
            left (45)
            backward (laenge)
            


            

baum (100,1)
print ("sucess")
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Es wäre bei so viel Code sehr hilfreich wenn wir die volle Fehlermeldung inklusive Zeilennummer zu sehen bekommen.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@JonasToGo: was ist an der Fehlermeldung unverständlich. `position` ist ein Vec2D-Objekt, das man nicht Aufrufen `()` kann. Warum sollte man auch? Und generell kann man einem Funktionsaufruf auch keinen Wert zuweisen, was die andere Fehlermeldung erklärt. Laß einfach die Klammern weg.
JonasToGo
User
Beiträge: 2
Registriert: Montag 15. Januar 2018, 16:22

Sirius3 hat geschrieben:@JonasToGo: was ist an der Fehlermeldung unverständlich. `position` ist ein Vec2D-Objekt, das man nicht Aufrufen `()` kann. Warum sollte man auch? Und generell kann man einem Funktionsaufruf auch keinen Wert zuweisen, was die andere Fehlermeldung erklärt. Laß einfach die Klammern weg.
Danke! ICh bin wiegesagt Anfänger und hab noch nicht wirklich Ahnung. Könnt ihr mir nen Weg empfehlen Python gescheit zu lernen!
Antworten