1.源代码
import turtle toplevel = 8 # 一共递归6层 angle = 30 rangle = 15 def drawTree(length, level): turtle.left(angle) # 绘制左枝 turtle.color("black") turtle.forward(length) if level == toplevel: # 叶子 turtle.color("pink") turtle.circle(2, 360) if level < toplevel: # 在左枝退回去之前递归 drawTree(length - 10, level + 1) turtle.back(length) turtle.right(angle + rangle) # 绘制右枝 turtle.color("black") turtle.forward(length) if level == toplevel: # 叶子 turtle.color("pink") turtle.circle(2, 360) if level < toplevel: # 在右枝退回去之前递归 drawTree(length - 10, level + 1) turtle.color("black") turtle.back(length) turtle.left(rangle) turtle.left(90) turtle.penup() turtle.back(300) turtle.pendown() turtle.forward(100) turtle.speed('fastest') drawTree(80, 1) turtle.done()
2.运行结果
3.结论:
这段代码使用Python的turtle库绘制一棵树,使用递归的方式绘制树的枝干。首先定义了全局变量toplevel表示递归的层数,angle表示左枝的旋转角度,rangle表示右枝的旋转角度。然后定义了drawTree函数,该函数接受两个参数,分别是枝干的长度和当前的层数。在绘制左枝时,先将画笔向左旋转angle度,然后向前移动length长度,如果当前层数等于最高层数toplevel,则绘制一个叶子(使用turtle库的circle方法绘制一个半径为2的圆),否则继续递归调用drawTree函数。接着将画笔向后移动length长度,然后向右旋转angle + rangle度,绘制右枝,同样在绘制右枝之前判断当前层数是否为最高层数,是则绘制叶子,否则递归调用drawTree函数。最后将画笔向后移动length长度,向左旋转rangle度。最后设置turtle的初始状态,包括画笔的方向、位置和速度,然后调用drawTree函数开始绘制树。
python画樱桃树
于 2023-12-13 07:50:18 首次发布