Python 递归问题…Sierpinskis三角形
我正在研究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
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)
等。