在Python 2.6.4中,为什么调用已定义且能正常工作的函数时会出现语法错误?
这个问题发生在IDLE和Windows 7 RC1上(希望这能帮到你)。这是代码模块:
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()
当我运行这个程序时,出现了错误:你的程序有错误:语法无效。IDLE会把“spokes”这个词标记出来,显示在饼图函数里。
如果我把整个饼图函数注释掉,程序就能正常运行。
4 个回答
2
其他人已经指出了实际的语法错误,所以我就不再多说了。不过我想补充一点,如果我遇到语法错误,我首先会查看函数之前的几行代码。通常问题出在缺少一个括号或者逗号放错了地方。
3
你有没有注意到,在你调用spokes()之前的那一行,似乎缺少了一个结束的小括号?
length_of_spoke = length_of_side/(2*sin(pi/180*angle/2))
而不是
length_of_spoke = length_of_side/(2*sin(pi/180*angle/2)
2
上一行缺少一个闭合的括号。它应该是这样写的:
length_of_spoke = length_of_side/(2*sin(pi/180*angle/2))