Python Turtle 绘图入门与实战详解
Python 的 Turtle 模块是初学者学习编程逻辑的理想工具。 Turtle 的基本动作、转向控制、坐标设置、循环结构应用以及函数封装方法。通过绘制三角形、正方形、圆形及复杂图形示例,展示了如何利用 for 循环简化重复操作,并结合 ontimer 和 onclick 实现简单的动画交互。内容涵盖画布配置、画笔颜色填充、坐标定位技巧,并补充了性能优化与常见错误排查指南,帮助读者快速掌握 Python 绘图核心技能。

Python 的 Turtle 模块是初学者学习编程逻辑的理想工具。 Turtle 的基本动作、转向控制、坐标设置、循环结构应用以及函数封装方法。通过绘制三角形、正方形、圆形及复杂图形示例,展示了如何利用 for 循环简化重复操作,并结合 ontimer 和 onclick 实现简单的动画交互。内容涵盖画布配置、画笔颜色填充、坐标定位技巧,并补充了性能优化与常见错误排查指南,帮助读者快速掌握 Python 绘图核心技能。

Turtle 模块是吸引非专业开发者学习 Python 入门的好工具。通过几行代码的执行,软件就能画出漂亮的图形,美观且有成就感,从而激发对 Python 编程的兴趣。
这些漂亮的图形如三角形、五角星、几何图案等。在写代码时改变几个参数,就可以产生新的形状。下面以玩转 Turtle 为题进入本篇的介绍。
Turtle 英译过来为乌龟,不过我们介绍的不是这种动物,而是以此命名的一个绘图库。在 Python 文档中介绍了 Turtle 本身是一款简单、易上手的绘图库,非常适合新手进入编程的世界。
该软件由 Wally Feurzeig, Seymour Papert and Cynthia Solomon 等在 1967 年使用最原始的 Logo 编程语言开发而成。Python 语言出现后,有开发者使用 Python 对其进行了重写,变成了 Python 内置的一个模块。
随着 Python 语言的大热,Turtle 模块也成为了 Python 语言简单好用的一个代名词。在 Python 中,使用 turtle 模块的几行代码、改变几个参数就能绘出漂亮的图形,如果再增加一些参数,还能绘制出创意十足的图像。
在学着绘图时,就会逐步学习 Python 的一些基本语法、函数、模块、类和对象等基础知识;边玩边学四字成语非常恰当的描述了玩转 turtle 模块的境界,也非常适宜于少儿或者初学者进入 Python 的世界。
当然在这里需要进入 Python 编程环境,可以直接使用 IDLE 新建一个 Python 文件,命名为 turtle1.py。然后在这个 Python 文件中就可以开始动手写有关 Turtle 的代码。
Turtle 是 Python 安装时自带的内置模块,调用该模块非常简单,直接使用 import 方式加载:
import turtle
这也是程序的第一行代码,用于准备好使用 turtle 这个模块。
首先从走开始,让乌龟往前走 100 步,就在第一行代码结束后在第二行代码处写入:
turtle.forward(100)
这里 forward 就是往前走的方法,括号里的 100 为设定的步伐参数。
此时如果运行该程序,就可以看到一张画布弹出来,该画布左上角有 Python Turtle Graphics 标题和 LOGO,在画布的中部黑三角箭头正按照较快的速度往前挪,很快到达 100 步那个位置。
前进的过程就像一支黑色的笔在画布上按照设定方式在画画,笔头安装了一个黑色箭头用于指示方向,非常生动有趣。
如果想往前走 300 步,直接修改那个 100 为新的 300 即可。
即对于 forward(参数) 方法,括号里的参数是可以修改的,这在 Python 程序里 forward 就是一个公用函数,其中的参数为变量,即值可以改变的参数。控制了这个参数,就可以控制前进的距离。
如果想回撤,那么就可以使用乌龟的 backward 方法。如在上述代码第三行加入回撤 50 步的代码,如下:
import turtle
turtle.forward(100)
turtle.backward(50)
保存新的文件同时运行,可以看到画布上画笔的黑三角箭头保持方向不变,但倒着往回 50 步。
上述 forward 和 backward 就是前进和后退的方法,两种方法都有括号,在括号里可以设定前进或后退的步伐(这里一步为画布上的一个像素点)。
只有前进和后退显然有点单调,我们需要还可以转弯。此时就需要使用 turtle 的转向方法,左转为 left,右转为 right,如下我们在前述代码基础上增加左转方法,并设定角度为 90 度,然后继续往前 100 步。
import turtle
turtle.forward(100)
turtle.backward(50)
turtle.left(90)
turtle.forward(100)
运行程序后,画布上画笔先是笔头左转了 90 度方向,变成了向上,然后沿着向上的方法画出了长度为 100 像素的一条线,此时图形变成了一个倒丁字形状。
上述代码中 left 方法与 forward 方法一样,括号里的参数也可以随意设定,比如将 left 方法里的 90 度修改为 45 度:
import turtle
turtle.forward(100)
turtle.backward(50)
turtle.left(45)
turtle.forward(100)
再运行程序,此时图形就变为一个钝角形状。
由此看来,改变 left 方法里的角度参数,画笔就可以绘制出不同形状的图形。
与左转 left 方法使用方法一致,右转 right 方法用于向右转,其中 right(角度) 中的角度参数也可以根据需要来设置。例如在上述左转前行的基础上,设定右转 90 度,然后前行 100 步:
import turtle
turtle.forward(100)
turtle.backward(50)
turtle.left(45)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
接下来可以思考一下,如果在上述基础上将右侧下部开口的三角形状进行封闭,也就是形成一个完整的三角形呢?
很显然,此时需要动脑筋稍微计算一下。首先箭头需要右转 135 度,然后再前行 100 步:
import turtle
turtle.forward(100)
turtle.backward(50)
turtle.left(45)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(135)
turtle.forward(100)
再次运行程序,画笔先在原有位置顺时针方向旋转 135 度,笔头方向正好朝西,然后开始画一个长为 100 像素的直线,就得到一个右侧封闭的三角形。
到这里我们小结一下,使用 turtle 绘图的基本动作方法包括:forward(前进参数)、backward(后退参数)、left(左转角度)、right(右转角度)。turtle 是乌龟绘图模块名,该模块中内置了这些动作方法,因此在使用的时候直接调用并给定相应参数即可。简单理解,turtle 就是那支画笔,这些基本动作方法就用于控制画笔的画画方式。用 Python 的面向对象概念来理解,这些方法属于 turtle 这个绘图对象,调用时使用了'.'运算符,其格式为 turtle.方法名(参数)。turtle 这个绘图对象还有很多类似方法,使用格式均为 turtle.方法名(参数)。
试想我们是否可以设置一下画布和画笔的颜色呢?肯定是可以的,调用画笔的 bgcolor 方法就可以设置画布背景颜色,格式为:turtle.bgcolor(颜色参数);调用其 color 方法就可以设置画笔颜色,格式为 turtle.color(颜色参数)。这里的颜色参数直接给常见的颜色,如 red、white、yellow、purple,使用的时候加单引号;也可以给 RGB 颜色代码,如 255,255,255 为白色,0,0,0 为黑色。需要说明的是,设置画布背景颜色一般会放置在程序开始部分,而画笔颜色可以在需要的地方设置即可。
如将上述绘制三角形的代码修改一下,增加画布背景和画笔颜色:
import turtle
turtle.bgcolor('black')
turtle.color('yellow')
turtle.forward(100)
turtle.backward(50)
turtle.left(45)
turtle.color('white')
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.color('red')
turtle.right(135)
turtle.forward(100)
运行代码,此时画布变为了黑色,画笔先为黄色,然后为白色,最后为红色。
上面我们通过控制 turtle 画笔的动作和转向角度,画出了一个三角形。想想心里是不是已经有了小小的成就感了?看来用 turtle 软件画画还是比较简单的。
下面我们来在画布上画一个正方形。如何设计呢?首先来分析一下,我们知道正方形每条边长度相同,边与边的夹角为 90 度。因此可以先往前移动一个距离 d,然后左转 90 度,转向后继续往前移动距离 d,再左转 90 度,继续移动距离 d,再来一次左转 90 度,移动距离 d,这样起点和终点就重合了,也就画出了一个完整的正方形。我们来看代码:
import turtle
turtle.bgcolor('black')
turtle.color('yellow')
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
执行后,画笔就在画布上画出了一个正方形。
仔细观察代码,可以发现如果把 turtle.forward(100)、turtle.left(90) 这两行语句作为一个动作组合的话,整个代码中一共重复了四次,这种重复动作写在代码中还是有点冗长的,试想如果重复 100 次这个组合动作,那就得将这个组合动作代码重复编写 100 次,这样做肯定不科学。如何简化这种重复执行动作组合呢?Python 中提供了控制循环的 for 语句,专门用于解决这类重复性问题。我们先来修改一下画正方形的代码:
import turtle
turtle.bgcolor('black')
turtle.color('yellow')
totalTimes=4 #设定一共需要重复的次数
for times in range(totalTimes): #使用 for 语句对每一次进行设计相同的动作组合
turtle.forward(100) #设定前移 100 个像素点
turtle.left(90) #然后左转 90 度
执行后效果与上述图是一样的。这里代码就简化多了,代码中 for 语句就用于设计循环语句,其使用方法为:
for times in range(totalTimes):
#这里写需要重复的代码块。
上述画四边形时,相同动作组合重复了 4 次,动作组合中转向角度为 90 度,两个数字相乘正好为 360 度,从角度来说就是从起始点出发旋转一周回到原点,也恰好构成一个封闭的图形。
如果还想画一个封闭的五边形,就可以设计动作组合中转向角度为 72 度,重复次数为 5 次;如果画一个封闭的六边形,设计转向角度为 60 度,重复次数为 6 次即可。如下设计在画布上先画五边形,然后画六边形的代码:
import turtle
turtle.bgcolor('black')
turtle.color('yellow')
#先画 6 边形
totalTimes=6
for times in range(totalTimes):
turtle.forward(100)
turtle.left(60)
#然后左转向 150 度,并往前移动 50 个像素点
turtle.left(150)
turtle.forward(50)
#最后画 5 边形
totalTimes=5
for times in range(totalTimes):
turtle.forward(100)
turtle.left(72)
执行上述代码,在画布上画出的效果是这样的。
这样是不是就可以画一个圆呢?只要将画笔移动的距离设置短一些,如设置为 2,转向设置也为 2,那重复次数就必须设置为 180,由此就可以画出一个妥妥的圆了。代码如下:
import turtle
turtle.bgcolor('black')
turtle.color('yellow')
#画圆
totalTimes=180
for times in range(totalTimes):
turtle.forward(2)
turtle.left(2)
执行后效果如下。
不过在 turtle 软件中已经内置好了画圆的方法,就是使用 turtle.circle(半径参数),给定半径参数就能完成圆的绘制。如下代码:
import turtle
turtle.bgcolor('black')
turtle.color('yellow')
#画一个半径为 100 的圆
turtle.circle(100)
到现在为止,我们已经掌握了画基本图形的方法。不过仔细观察的话也可以发现每次画画时画笔总是从画布的中心出发,因为这是 turtle 模块设置好了的,默认从中心点出发。
如果使用二维坐标来表示的话,画布的中心位置坐标为(0,0),即纵横坐标均为 0。
我们也可以使用 turtle 模块的 setpos 方法修改其位置,如 turtle.setpos(10,10) 就是设置画笔纵坐标为 10,横坐标也为 10;如若设置为 turtle.setpos(10,10),就是设置画笔横坐标为 10,也就是中心点往右 10 个像素点,然后再往上 10 个像素点。
如果用数学角度来说明的话,新的起始点就在中心点右偏上 45 度,距离为 d=(1010+1010)的平方根。
我们来试一下:
import turtle
turtle.bgcolor('black')
turtle.color('yellow')
#画笔默认在画布的中心位置,坐标为 (0,0)
#设置画笔的位置挪到纵横坐标均为 10 像素的位置,即中心点往右 45 度方向
turtle.setpos(10,10)
#开始画圆,画一个半径为 100 像素的圆
turtle.circle(100)
运行程序后,画笔先从中心位置挪到指定位置 (10,10),然后开始画圆。
这个圆画的不漂亮,起始点貌似有个尾巴,这是画笔最开始从中心位置挪到设定位置时画笔移动的痕迹。
如何去除这个痕迹呢?
我们可以这样做:使用 turtle 提供的提笔方法 penup( ),也就是先从中心点将画笔提起来,画笔在空中挪至设定位置,然后到了设定位置再将画笔落到画布上,此时就使用落笔方法 turtle.pendown( ),这样我们修改上述代码如下:
import turtle
turtle.bgcolor('black')
turtle.color('yellow')
#提起画笔
turtle.penup()
#设置画笔的位置挪到纵横坐标均为 10 像素的位置,即中心点往右 45 度方向
turtle.setpos(10,10)
#落下画笔
turtle.pendown()
#开始画圆,画一个半径为 30 像素的圆
turtle.circle(30)
再来执行代码,那个多余的尾巴就没有了。
同时如果想画图结束时那个画笔不显示,可以使用 hideturtle 方法,即隐藏画笔。
由此可以得到启发,使用提笔落笔的方法我们就可以在同一个画布上画出很多图形,当然前提是需要计算好位置。由此设计的时候可以先用笔参考如下坐标图给定位置。
例如我们来画个笑脸试试。
import turtle
turtle.bgcolor('black')
turtle.color('yellow')
#先画笑脸轮廓,画一个半径为 100 像素的圆
turtle.circle(100)
#提笔到左上角(-40,120)位置,画一个小圆,表示右眼
turtle.penup()
turtle.setpos(-40,120)
turtle.pendown()
turtle.circle(10)
#提笔到中部位置,先画一条短线表示上嘴唇
turtle.penup()
turtle.setpos(-10,60)
turtle.pendown()
turtle.forward(20)
#继续下移一定距离,画一条短弧线表示下嘴唇
turtle.penup()
turtle.setpos(-10,40)
turtle.pendown()
totalTimes=4
for times in range(totalTimes):
turtle.forward(5)
turtle.left(10)
#提笔到右上角(40,120)位置,画一个小圆,表示右眼
turtle.penup()
turtle.setpos(40,120)
turtle.pendown()
turtle.circle(10)
#隐藏那个画笔箭头
turtle.hideturtle()
运行效果如下图。
实话实说美观程度一般,不过至少画出了一个小人的脸,好像不咋笑。我们使用了 turtle.penup() 方法,就是提笔,而 turtle 模块中本身就自带了 pen 方法,也就是画笔方法,
可以通过 pen 方法来设置画笔的尺寸、颜色,也可以直接使用 pencolor、pensize 等方法。
具体使用格式为:
turtle.pen(pensize=10,pencolor='red',fillcolor='yellow')
或者直接设定:
turtle.pencolor('red')
turtle.pensize(10)
如果需要填充颜色,就需要使用 turtle 的 beginfill() 和 end_fill() 组合,格式为:
turtle.fillcolor("yellow")
turtle.begin_fill()
turtle.circle(100)
turtle.end_fill()
我们将这些颜色的设定加入之前画的那个笑脸代码中:
import turtle
turtle.bgcolor('black')
turtle.color('yellow')
#先画笑脸轮廓,画一个半径为 100 像素的圆
turtle.fillcolor("yellow")
turtle.begin_fill()
turtle.circle(100)
turtle.end_fill()
#提笔到左上角(-40,120)位置,画一个小圆,表示右眼
turtle.pen(pensize=10,pencolor='red',fillcolor='yellow')
turtle.penup()
turtle.setpos(-40,120)
turtle.pendown()
turtle.circle(10)
#提笔到中部位置,先画一条短线表示上嘴唇
turtle.penup()
turtle.setpos(-10,60)
turtle.pendown()
turtle.forward(20)
#继续下移一定距离,画一条短弧线表示下嘴唇
turtle.penup()
turtle.setpos(-10,40)
turtle.pendown()
totalTimes=4
for times in range(totalTimes):
turtle.forward(5)
turtle.left(10)
#提笔到右上角(40,120)位置,画一个小圆,表示右眼
turtle.pen(pensize=10,pencolor='red',fillcolor='yellow')
turtle.penup()
turtle.setpos(40,120)
turtle.pendown()
turtle.circle(10)
#隐藏那个画笔箭头
turtle.hideturtle()
再运行代码,就得到效果图如下。
我们来画一个小车,在画的时候先需要在纸上稍微设计一下车的基本结构参数,如长度和高度等等。示例代码如下:
import turtle
turtle.bgcolor('black')
turtle.color('yellow')
#先画后轮子
turtle.fillcolor("yellow")
turtle.begin_fill()
turtle.circle(20)
turtle.end_fill()
#提笔往前挪,画前轮
turtle.penup()
turtle.forward(200)
turtle.pendown()
turtle.begin_fill()
turtle.circle(20)
turtle.end_fill()
#画车轮廓
turtle.left(90)
turtle.forward(50)
turtle.right(90)
turtle.forward(70)
turtle.left(135)
turtle.forward(60)
turtle.right(45)
turtle.forward(2)
turtle.left(90)
turtle.forward(70)
turtle.right(90)
turtle.forward(20)
turtle.left(90)
turtle.forward(160)
turtle.left(50)
turtle.forward(60)
turtle.left(40)
turtle.forward(18)
turtle.left(90)
turtle.forward(240)
#画后轮与车轮廓接触线
turtle.penup()
turtle.home()
turtle.pendown()
turtle.left(90)
turtle.forward(50)
turtle.write("Hello World", font=("Arial", 12, "normal"))
#车上方写标题
turtle.penup()
turtle.setpos(60,140)
turtle.pendown()
turtle.write("Demo Car", font=("Arial", 18, "bold"))
#隐藏那个画笔箭头
turtle.hideturtle()
运行效果如图。
还想画别的吗?只要有足够的想象力,大部分的图都可以使用这个 turtle 来实现。那我们在画的过程中每完成一个图形,是否可以将这个画图形的过程包装起来给个名字,如果想画这个图形,直接调用它的名字就可以呢。肯定是可以的,而且还非常方便。Python 中的函数就是用来做这个事情的,其基本格式为:
def 函数名称 (参数):
#执行代码
如果以画画为例,函数名称就可以命名为画图形名称,这里的参数是可选项,在画画过程中如果想采用不同颜色的笔,就可以将笔的颜色作为一个参数变量,每次使用这个函数时给定笔的颜色参数,就可以按照自己喜欢的颜色画画了。也可以将别的可以变化的参数作为变量参数来设定。
执行代码处就是代码块,用于完成整个图形绘制的过程。举个栗子,我们将前面画四边形、五边形、六边形等可以包装成一个函数,名称取为 drawShape,参数包括两个,一个是 totalTimes,总的边数,一个是 distance,就是画画长度,代码如下:
def drawShape(totalTimes,distance):
for time in range(totalTimes):
turtle.forward(distance)
turtle.left(360/totalTimes)
这样我们想画这种类似形状的时候,只需要调用这个函数名,给定两个参数的值,就可以了。例如:
import turtle
turtle.bgcolor('black')
turtle.color('yellow')
#编写一个函数 drawShape,用于画多边形
def drawShape(totalTimes,distance):
for time in range(totalTimes):
turtle.forward(distance)
turtle.left(360/totalTimes)
#调用这个函数,来画一个五边形,每边长度为 80 个像素
drawShape(5,80)
在 turtle 中还有动作触发响应事件,也就是通过鼠标或键盘来控制画画开始或结束,还可以设置时钟,这样我们就可以画点动画了,当然是较为简单的。例如我们将上述画笑脸和画车两个作品放在一个文件里,先画笑脸,等待 2 秒后,再画出车来,代码参考如下:
import turtle
turtle.bgcolor('black')
#定义一个画车的函数
def drawCar():
turtle.color('yellow')
#先画后轮子
turtle.fillcolor("yellow")
turtle.begin_fill()
turtle.circle(20)
turtle.end_fill()
#提笔往前挪,画前轮
turtle.penup()
turtle.forward(200)
turtle.pendown()
turtle.begin_fill()
turtle.circle(20)
turtle.end_fill()
#画车轮廓
turtle.left(90)
turtle.forward(50)
turtle.right(90)
turtle.forward(70)
turtle.left(135)
turtle.forward(60)
turtle.right(45)
turtle.forward(2)
turtle.left(90)
turtle.forward(70)
turtle.right(90)
turtle.forward(20)
turtle.left(90)
turtle.forward(160)
turtle.left(50)
turtle.forward(60)
turtle.left(40)
turtle.forward(18)
turtle.left(90)
turtle.forward(240)
#画后轮与车轮廓接触线
turtle.penup()
turtle.home()
turtle.pendown()
turtle.left(90)
turtle.forward(50)
turtle.write("This is a demo car", font=("Arial", 12, "normal"))
#车上方写标题
turtle.penup()
turtle.setpos(60,140)
turtle.pendown()
turtle.write("Demo Car", font=("Arial", 18, "bold"))
#隐藏那个画笔箭头
turtle.hideturtle()
#定义个画笑脸的函数
def drawFace():
turtle.color('yellow')
turtle.speed(0.1)
#先画笑脸轮廓,画一个半径为 100 像素的圆
turtle.circle(100)
#提笔到左上角(-40,120)位置,画一个小圆,表示右眼
turtle.penup()
turtle.setpos(-40,120)
turtle.pendown()
turtle.circle(10)
#提笔到中部位置,先画一条短线表示上嘴唇
turtle.penup()
turtle.setpos(-10,60)
turtle.pendown()
turtle.forward(20)
#继续下移一定距离,画一条短弧线表示下嘴唇
turtle.penup()
turtle.setpos(-10,40)
turtle.pendown()
totalTimes=4
for times in range(totalTimes):
turtle.forward(5)
turtle.left(10)
#提笔到右上角(40,120)位置,画一个小圆,表示右眼
turtle.penup()
turtle.setpos(40,120)
turtle.pendown()
turtle.circle(10)
#提示语
turtle.penup()
turtle.setpos(-80,-30)
turtle.pendown()
turtle.write("Waiting 2 seconds...", font=("Arial", 12, "normal"))
#隐藏那个画笔箭头
turtle.hideturtle()
#先画笑脸,等待 2s 后重置画笔,然后开始画车
turtle.ontimer(drawFace, t=2000)
turtle.reset()
turtle.onclick(drawCar)
运行这个文件,整个过程变成了一个简单的动画。
用 turtle 画出简单的图形容易,如果想画出复杂的图形则有点考验耐心和思维过程。网上有很多 turtle 绘制的复杂图形,那代码就会大段大段的写。限于篇幅我们不再一一复现这些复杂图形。
幸好在 turtle 模块里就有一些案例,在刚才命名的 turtle1.py 主菜单里的 help 菜单就有 turtle demo。
点击之后就出来一个窗口如下。
从左侧的 examples 可以选择其中一种案例,窗口左侧为 turtle 代码,右侧点击 start 可以显示出对应的绘图效果。
如上述的 forest 案例,点击 start 后绘制出来三棵树,非常漂亮。这些案例中使用到了 Python 的面向对象、函数、随机、时钟等多种思维和知识,也是 Python 知识的一种综合应用,如果方法和毅力得当,确实是提升学习和应用 Python 的有效手段。
在实际使用中,为了更好的体验,我们可以对屏幕进行配置。例如设置窗口大小、标题以及关闭按钮的行为。
import turtle
# 设置画布大小和位置
screen = turtle.Screen()
screen.setup(width=800, height=600)
screen.title("Advanced Turtle Demo")
# 设置画笔速度,0 为最快
turtle.speed(0)
# 关闭追踪,提高绘图速度(适合大量绘图)
turtle.tracer(0, 0)
# 开始绘图
turtle.penup()
turtle.goto(-200, -200)
turtle.pendown()
turtle.begin_fill()
turtle.color("blue")
for i in range(4):
turtle.forward(400)
turtle.left(90)
turtle.end_fill()
# 刷新屏幕
screen.update()
# 保持窗口打开
turtle.done()
tracer(0, 0) 的作用是关闭自动重绘,只有在调用 update() 时才刷新画面,这能显著提高复杂图形的绘制速度。
除了循环,递归也是绘制分形图形(如树、雪花)的强大工具。以下是一个简单的递归画树示例:
import turtle
def draw_tree(branch_len, t):
if branch_len > 5:
t.forward(branch_len)
t.right(20)
draw_tree(branch_len - 15, t)
t.left(40)
draw_tree(branch_len - 15, t)
t.right(20)
t.backward(branch_len)
t = turtle.Turtle()
my_win = turtle.Screen()
t.left(90)
t.up()
t.backward(100)
t.down()
t.color("green")
treesize = 100
draw_tree(treesize, t)
my_win.exitonclick()
这段代码利用递归调用来模拟树枝的生长过程,每次递归减少分支长度,直到达到终止条件。通过调整角度和长度参数,可以生成各种形态的分形树。
本文详细介绍了 Python Turtle 模块的基础用法及进阶技巧。从基本的移动、转向,到颜色设置、坐标控制,再到循环封装和函数复用,系统地展示了如何使用 Turtle 进行图形创作。此外,还补充了屏幕配置、性能优化以及递归绘图等内容,帮助读者构建更完善的知识体系。通过实践这些示例,初学者可以快速建立编程信心,掌握 Python 的核心逻辑,为进一步学习数据分析、游戏开发或人工智能打下坚实基础。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online