In Python 2.6.4, why do I get a syntax error for a function call, of which the function is defined and works perfectly on its own?
This happens in IDLE and Windows 7 RC1 (if that helps). Here is the module:
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, lengt开发者_如何学Goh, 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()
When I run the program, I get the error: There is an error in your program: invalid syntax. IDLE then highlights the "spokes" word within the pie-function.
If I comment-out the whole pie-function, the program runs perfectly.
At quick glance are you missing a closing parenthesis at the end of the line before you call spokes()?
length_of_spoke = length_of_side/(2*sin(pi/180*angle/2))
instead of
length_of_spoke = length_of_side/(2*sin(pi/180*angle/2)
The previous line is missing a closing parenthesis. It should read like this instead:
length_of_spoke = length_of_side/(2*sin(pi/180*angle/2))
There is a closing parenthesis missing in the previous line:
length_of_spoke = length_of_side/(2*sin(pi/180*angle/2)
Others have already pointed out the actual syntax error, so I won't say any more about that. One thing I will add though is that if I get a syntax error, the first place I look is on the lines before the function. Usually it's something like a paren missing or a comma in the wrong place.
精彩评论