看到一本Python算法与数据结构的书上有这个练习,我又顺手编了一下这个程序。感觉比书上写的程序还要条理更清晰一些,并且本人写的代码更加通用,而原书上的代码只能在固定的三个点画。
以下是本人代码:
""" 谢尔宾斯基三角形.py 主要步骤,画一个大的正三角形,然后每个点画三个更小的正三角形。 中间这个大三角形不必画,因为会自然形成。 """ __author__ = '李兴球' __date__ = '2012/12/9' __blog__ = 'www.lixingqiu.com import turtle def draw_xierbinsiji(length,level): if level<1:return start = turtle.pos() cors = [] # 保存大三角形三个中点坐标的 turtle.color(cs[level]) # 根据level选择颜色 turtle.pendown() turtle.begin_fill() # 开始填充 for x in range(3): turtle.fd(length/2) # 走一半是为了方便记录中点 cors.append(turtle.position())# 记录海龟到达边的中点时的坐标 turtle.fd(length/2) turtle.left(120) turtle.end_fill() # 结束填充 # 接下来是到画三个更小的三角形 draw_xierbinsiji(length/2,level-1) # 画左下角更小的三角形 turtle.goto(cors[0]) draw_xierbinsiji(length/2,level-1) # 画右下角更小的三角形 turtle.penup() turtle.goto(cors[2]) # 到上边中心点 turtle.pendown() draw_xierbinsiji(length/2,level-1) # 画上面的更小的三角形 turtle.penup() turtle.goto(start) # 别忘了回到初始点 cs = ['red','orange','yellow','green','cyan', 'blue','magenta','pink','magenta','black'] turtle.speed(0) turtle.delay(0) turtle.colormode(255) draw_xierbinsiji(200,6)
发表评论