In Python 2.6.4, warum bekomme ich einen Syntaxfehler für einen Funktionsaufruf, von denen die Funktion definiert ist und funktioniert perfekt auf seinem eigenen?

StackOverflow https://stackoverflow.com/questions/1689594

  •  18-09-2019
  •  | 
  •  

Frage

Dies geschieht in IDLE und Windows 7 RC1 (wenn das hilft). Hier ist das Modul:

    from math import *
from TurtleWorld import *

world = TurtleWorld()
bob = Turtle()
bob.delay = 0.1

def polyline(turtle, length, n, angle):
    for i in range(n):
        fd(turtle, length)
        rt(turtle, angle)

def polygon(turtle, length, n):
    """ polygon uses a turtle to draw a polygon
        with n sides of the given length.
    """
    angle = 360.0/n
    polyline(turtle, length, n, angle)

def spokes(turtle, length_of_spoke, number_of_spokes):
    angle = 360.0/number_of_spokes
    for i in range(number_of_spokes):
       turtle.fd(length_of_spoke)
       turtle.pd
       turtle.bk(length_of_spoke)
       turtle.rt(angle)
       turtle.pu

def pie(turtle, length_of_side, number_of_sides):
    """pie uses a turtle to draw a polygon
        with sides of the given length and with the given
        number of sides.
    """
    angle = 360.0/number_of_sides
    length_of_spoke = length_of_side/(2*sin(pi/180*angle/2)
    spokes(turtle, length_of_spoke, number_of_sides)
    turtle.pd
    turtle.fd(length_of_spoke)
    turtle.lt(270-angle/2)
    polygon(turtle, length_of_side, number_of_sides)

spokes(bob, 30, 11)

wait_for_user()

Wenn ich das Programm laufen lasse, erhalte ich die Fehlermeldung: Es ist ein Fehler in Ihrem Programm: ungültige Syntax. IDLE dann hebt das „Speichen“ Wort in den torten Funktion.

Wenn ich die ganze Kuchen-Funktion Schreib-out, das Programm läuft perfekt.

War es hilfreich?

Lösung

Die vorherige Zeile fehlt eine schließende Klammer. Es sollte wie folgt statt lesen:

length_of_spoke = length_of_side/(2*sin(pi/180*angle/2))

Andere Tipps

Auf schnellen Blick werden Sie eine schließende Klammer am Ende der Zeile fehlt, bevor Sie Speichen () aufrufen?

length_of_spoke = length_of_side/(2*sin(pi/180*angle/2))

statt

length_of_spoke = length_of_side/(2*sin(pi/180*angle/2)

Es gibt eine schließende Klammer in der vorherige Zeile fehlt:

length_of_spoke = length_of_side/(2*sin(pi/180*angle/2)

Andere haben bereits darauf hingewiesen, die tatsächlichen Syntaxfehler aus, so dass ich mehr über das nicht sagen. Eine Sache, die ich allerdings hinzufügen, ist, dass, wenn ich einen Syntaxfehler erhalten, der erste Platz, den ich sehen ist auf die Linien vor die Funktion. Normalerweise ist es so etwas wie ein paren fehlt oder ein Komma an der falschen Stelle.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top