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?
-
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.
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.