Python 递归问题…Sierpinskis三角形

Python 递归问题…Sierpinskis三角形,python,recursion,Python,Recursion,我正在研究sierpinskis三角形,由于出现以下错误,我似乎无法超越前两次迭代: 8.py", line 43, in drawTriangle t.setposition(x,y) AttributeError: 'float' object has no attribute 'setposition' 为什么它把“t”读成浮点数 下面是我们到目前为止的代码 def drawFractal(t, order, size): """The base case is just

我正在研究sierpinskis三角形,由于出现以下错误,我似乎无法超越前两次迭代:

8.py", line 43, in drawTriangle
    t.setposition(x,y)
AttributeError: 'float' object has no attribute 'setposition'
为什么它把“t”读成浮点数

下面是我们到目前为止的代码

def drawFractal(t, order, size):
    """The base case is just a rightside-up triangle"""                  
    t.forward(size)   
    t.left(120)                 
    t.forward(size)  
    t.left(120)               
    t.forward(size)    
    t.left(120)
    (x, y) = t.position()
    drawTriangle(x,y,order-1,t,size/2)
    """we must stop drawing so that we can cross from one stored point
    in the triangle to another on the other side"""
##    t.penup()
##    t.goto(x,y)
##    t.pendown()

#create a helper function
def drawTriangle(x,y,order,t, size):
    #we need to store the 3 separate (x,y) coordinate values for each
    #new triangle
    if order < 0: #not entirely sure about this number
        return 
    else:
        #step 1: draw upside down triangle
        #set position to x,y (automatically stored with each iteration)
        t.setposition(x,y)
        #^this code isn't working for some reason (t seems to be a float?)
        #setting (x,y) = to the moethod doesn't help

        t.forward(size)
        (x2, y2) = t.position()
        t.left(60)                 
        t.forward(size)  
        t.left(120)               
        t.forward(size)
        (x3, y3)=t.position()
        t.left(120)
        t.forward(size)

        #step 2: recursion - call drawTriangle 3x
        drawTriangle(x,y, order-1, size/2, t)
        drawTriangle(x2,y2, order-1, size/2, t)
        drawTriangle(x3,y3, order-1, size/2, t)
def drawFractal(t、顺序、大小):
“”“基本大小写只是一个右侧向上的三角形”“”
t、 前进(大小)
t、 左(120)
t、 前进(大小)
t、 左(120)
t、 前进(大小)
t、 左(120)
(x,y)=t.位置()
drawTriangle(x、y、订单1、t、尺寸/2)
“我们必须停止绘图,以便从一个存储点穿过
在三角形的另一边
##彭普
##后藤(x,y)
##彭敦
#创建一个助手函数
def drawTriangle(x、y、订单、t、尺寸):
#我们需要分别存储3个单独的(x,y)坐标值
#新三角
如果订单<0:#不完全确定该数字
返回
其他:
#第一步:画倒三角形
#将位置设置为x,y(随每次迭代自动存储)
t、 设定位置(x,y)
#^由于某种原因,此代码不起作用(t似乎是一个浮点?)
#将(x,y)=设置为moethod没有帮助
t、 前进(大小)
(x2,y2)=t.位置()
t、 左(60)
t、 前进(大小)
t、 左(120)
t、 前进(大小)
(x3,y3)=t.位置()
t、 左(120)
t、 前进(大小)
#步骤2:递归-调用drawTriangle 3x
drawTriangle(x,y,订单1,尺寸/2,t)
drawTriangle(x2,y2,订单-1,尺寸/2,t)
drawTriangle(x3,y3,订单-1,尺寸/2,t)

在函数末尾,上次调用中的参数顺序似乎不正确。将
drawTriangle
函数的最后几行替换为以下几行:

def drawTriangle(x,y,order,t, size):
    ....
    drawTriangle(x,y, order-1, t, size/2)
    drawTriangle(x2,y2, order-1, t, size/2)
    drawTriangle(x3,y3, order-1, t, size/2)

您是否有实例化
t
对象的代码?看起来你所做的一切都是一个浮点数,而不是一个对象(就像Python所期望的那样)。drawTriangle的参数是
(x,y,order,t,size)
,但是你在末尾用不同的顺序调用它
(x,y,order-1,size/2,t)
size
t
参数的位置反转到递归调用。使用
绘图三角形(x、y、订单-1、t、尺寸/2)
等。