修复错误并完成Python代码

2024-09-28 17:18:51 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在做一个螺旋描记器,首先把它自己画成12个三角形,现在我想画一个圆沿着它的边(我希望这是有意义的)这是它现在的代码

   from graphics import *
from math import *


def ar(a):
    return a*3.141592654/180

def spiral(x0,y0,win):
    startangle = 60
    stepangle = 120
    radius = 50
    p1 = Point(x0 + radius * cos(ar(startangle)), y0 + radius * sin(ar(startangle)))
    for step in range(12):
        startangle += 30
        for i in range((stepangle+startangle),(360+stepangle+startangle),stepangle):
            p2 = Point(x0 + radius * cos(ar(i)), y0 + radius * sin(ar(i)))
            Line(p1,p2).draw(win)
            p1 = p2

def doublespiral():
    win = GraphWin("stuff",800,800)
    x1 = 400
    y1 = 400
    radius1 = 100
    startangle1 = 60
    stepangle1 = 120
    p1 = Point(x1 + radius1 * cos(ar(startangle1)), y1 + radius1 * sin(ar(startangle1)))
    for steps in range(12):
        startangle1 += 30
        for i in range((stepangle1+startangle1),(360+stepangle1+startangle1), stepangle1):
            p2 = Point(x1 + radius1 * cos(ar(i)), y1 + radius1 * sin(ar(i)))

spiral(p1,p2,win)
input("<ENTER> to quit...")
win.close()

def main():
    doublespiral()


main()

下面是它给我的全部错误

in spiral(x0, y0, win)
14     stepangle = 120
15     radius = 50
16 <----   p1 = Point(x0 + radius * cos(ar(startangle)), y0 + radius * sin(ar(startangle)))
17     for step in range(12):
18         startangle += 30

TypeError: unsupported operand type(s) for +: 'instance' and 'float' 

但当我运行所说的代码时,我不断得到这个错误“ TypeError:不支持+:'instance'和'float'的操作数类型“有人能告诉我错误是什么,以便我了解如何在将来的代码中修复/避免它,以及如何修复它吗?你知道吗


Tags: inforrangesincoswinpointar
1条回答
网友
1楼 · 发布于 2024-09-28 17:18:51

我在这里猜测一下,因为您还没有发布跟踪,但可能是因为以下几行:

def spiral(x0,y0,win):
    ...
    p1 = Point(x0 + radius * cos(ar(startangle)), y0 + radius * sin(ar(startangle)))
    ...

spiral(p1,p2,win)

如果p1Point类型,您将它传递给spiral,在那里它是x0,然后像这里一样添加它们

p1 = Point(x0 + radius * cos(ar(startangle)), y0 + radius * sin(ar(startangle)))

将失败,因为无法将instancex0)添加到floatradius)。你知道吗

相关问题 更多 >