在Python 2.6.4中,为什么调用已定义且能正常工作的函数时会出现语法错误?

1 投票
4 回答
1320 浏览
提问于 2025-04-15 15:45

这个问题发生在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))

撰写回答