本文章例题截取自 :python2ji.com 

好的,既然要细致地介绍每个函数,我们就来一次深入的“海龟之旅”,让每个命令都不漏掉,并且通过幽默、形象的比喻来讲解。我们就像是调皮的海龟指挥官,每个指令都能带领海龟完成一项任务。准备好了吗?


什么是Turtle库?

想象一下,Python 中有一只非常聪明的小海龟,它不仅能在你的命令下迅速画出图形,还能在画布上做出各种有趣的动作。这个小海龟名叫“Turtle”,它是 Python 内置的绘图库,用来帮助我们绘制图形和制作动画。无论你是刚刚接触编程的新手,还是想通过图形化的方式理解程序逻辑,Turtle库都是一个非常棒的选择。

这个库的工作原理就像你指挥一个小机器人,告诉它该做什么——比如“前进”,“转弯”,“画线”,“换颜色”等等。每个命令都是你给海龟发出的指令,它就会在屏幕上完成相应的动作。


安装Turtle库

最简单的部分来了!Turtle库是Python内置的,不需要额外安装。只要你有Python环境,就可以直接使用,像调料包一样,随时能打开,准备好吃一顿编程大餐了:

import turtle  # 导入Turtle库

Turtle库的基本命令

现在,我们进入“指挥海龟”环节!接下来,我们会用具体的例子来讲解每个常用的命令。你可以把这些命令当做调皮的魔法咒语,每个咒语对应一个特定的动作。

1. 海龟的前进:forward()backward()

首先,海龟得要动起来,对吧?这就需要我们用到 forward()backward() 来指挥海龟向前或向后移动。

  • turtle.forward(distance)
    让海龟朝着它的当前方向“前进”一定的距离。假设海龟正在朝着前方走路,你下达的命令就让它走上100步:

    t.forward(100)  # 让海龟前进100步
    
  • turtle.backward(distance)
    forward() 相对,backward() 让海龟向后走。假设海龟有点迷路了,想回到起点,你可以命令它倒退50步:

    t.backward(50)  # 让海龟后退50步
    

比喻:就像你给自己的车设定一个目的地,不同的是,forward 就是让车向前行驶,backward 就是让它倒车回来,完全听你的指挥!

2. 海龟的转向:right()left()

现在海龟会走了,但它不止要走,还要转弯。转弯的指令就是 right()left(),用来控制海龟的方向。

  • turtle.right(angle)
    让海龟向右转一定的角度。如果你想让它转90度,跟着你右转,它就会走一条新的路线:

    t.right(90)  # 海龟向右转90度
    
  • turtle.left(angle)
    right() 相对,left() 让海龟向左转。比如让它左转45度:

    t.left(45)  # 海龟向左转45度
    

比喻:想象你在开车,如果你想让车向右转,给它打个右转灯,接着转方向盘就行;左转也一样,打个左转灯,车就会乖乖转过去。

3. 海龟的速度:speed()

海龟走得慢,像是世界上最悠闲的龟,但如果你希望它走得更快,可以用 speed() 调节它的速度。速度分为不同的等级,从1到10,数字越大,速度越快。

  • turtle.speed(speed)
    比如让海龟用最快的速度跑,设置成10:

    t.speed(10)  # 设置海龟最大速度
    

比喻:就像你开车时,不同的车速给你不同的体验,慢速你可以悠闲欣赏风景,高速你可以快速到达目的地,Turtle库的 speed() 也是这个道理。

4. 海龟的颜色:color()

如果你觉得海龟的颜色单调,可以用 color() 改变它的外貌,给它换个色彩,让它看起来更加个性化!

  • turtle.color(color)
    例如给海龟涂上红色:

    t.color("red")  # 设置海龟颜色为红色
    

比喻:就像给自己的衣服换个颜色,Turtle库让海龟穿上你喜欢的“衣服”,变得独一无二。

5. 海龟的笔:penup()pendown()

画画时,你可能不想海龟一直在画线,所以你可以通过 penup()pendown() 来控制是否画线。

  • turtle.penup()
    让海龟举起画笔,移动时不画线。例如,海龟需要从一个地方走到另一个地方,但不需要留下痕迹:

    t.penup()  # 举起画笔
    t.forward(100)  # 前进100步,不会画线
    
  • turtle.pendown()
    如果想让海龟开始画线,再下笔就可以了:

    t.pendown()  # 放下画笔
    t.forward(100)  # 画一条线
    

比喻:就像画画时你拿起了铅笔开始写字,想不画时就把铅笔放下,控制画笔就好。

6. 海龟的图形:circle()

有时候你可能想让海龟画圆圈。别担心,circle() 命令让海龟画出完美的圆形。

  • turtle.circle(radius)
    比如,想让海龟画一个半径为50的圆:

    t.circle(50)  # 画一个半径为50的圆
    

比喻:这就像给海龟画一个迷你环形跑道,它会顺着跑道画出一个完美的圆圈。

7. 海龟的绘图结束:done()

当你完成了图形的绘制,最后别忘了告诉海龟“任务完成,休息一下”。这时我们就用 done() 命令:

  • turtle.done()
    结束绘图,屏幕上的图形会停留在那里,海龟“休息”了。

    turtle.done()  # 绘图完成,结束操作
    

比喻:就像一幅画完成后,你告诉画家“好了,放下画笔吧”,然后画作挂在墙上展览。


总结

这些命令就像是给海龟安排不同任务的“魔法咒语”。从基础的前进、转弯,到更复杂的改变颜色、画圆,Turtle库让你在编程的过程中不断与这只“海龟”互动,它不仅能教会你编程的逻辑,还能通过图形的方式让你直观地看到结果,帮助你更好地理解编程的世界。

4. 例子:绘制一个简单的正方形

我们来画一个简单的正方形,通过使用 forwardright 命令,海龟就能绘制出一个正方形。

import turtle

# 创建一个海龟对象
t = turtle.Turtle()

# 设置画笔颜色和粗细
t.color("blue")
t.pensize(3)

# 绘制正方形
for _ in range(4):
    t.forward(100)  # 向前走100步
    t.right(90)  # 向右转90度

# 结束绘图
turtle.done()

在这个例子中,我们用 t.forward(100) 命令让海龟向前走100步,然后用 t.right(90) 命令让海龟转动90度,这样循环4次就绘制出了一个正方形。


下面我们来看一道比较复杂的真题,题目来源是: python2ji.com 

示例:绘制小星星(小雪花)

这道题目要求我们在屏幕上绘制4个小星星,每个星星的中心坐标由 points 列表提供,星星的半径长度由 randint() 函数随机生成,颜色为红色。

题目要求:
  • 任务:绘制小星星,星星的坐标、大小和颜色均需满足题目要求。
  • 要求:我们需要在指定位置填充代码,完成绘图。
原始代码框架:
import turtle as t
import random as r

r.seed(1)  # 设置随机数种子,确保每次运行生成的雪花是一样的
t.pensize(2)  # 设置画笔宽度
t.____________('red')  # 画笔颜色为红色
angles = 6  # 每个雪花的分支数
points = [[0, 0], [50, 40], [70, 80], [-40, 30]]  # 雪花中心点的坐标列表

# 遍历每个雪花的中心点
for i in range(____________):  # 这里需要填写代码,循环遍历 points 列表
    x0, y0 = points[i]  # 获取每个雪花的中心点坐标
    t.penup()  # 抬起画笔,准备移动到目标位置
    t.goto(____________)  # 移动到指定的中心点位置,这里也需要填写代码
    t.pendown()  # 放下画笔,开始绘制

    # 随机生成雪花的半径
    length = r.randint(6, 16)  # 随机生成雪花的半径长度
    for j in range(angles):  # 绘制雪花的每个分支
        t.____________(length)  # 向前绘制分支,前进一定长度
        t.____________(length)  # 向后绘制分支,回到中心点
        t.right(360 / angles)  # 每次转动360/angles度,使得每个分支之间均匀分布

t.done()  # 完成绘制,保持结果
分析与解答
  1. 画笔颜色

    • 我们需要设置画笔颜色为红色。使用命令 t.color('red') 可以完成这一功能。因此,应该填入:
      t.color('red')
      
  2. 循环遍历雪花坐标

    • 我们需要遍历 points 列表中的坐标,并为每个坐标绘制一个雪花。可以直接用 for i in range(len(points)) 来遍历列表 points,并获取每个雪花的中心点坐标。
    • 填入:
      for i in range(len(points)):
      
  3. 移动到指定位置

    • 我们要把海龟移动到每个雪花的中心坐标。可以通过 t.goto(x0, y0) 命令将海龟移到 (x0, y0) 坐标位置。
    • 填入:
      t.goto(x0, y0)
      
  4. 绘制雪花的每个分支

    • 每个雪花有6个分支,因此我们用 angles = 6 表示每个雪花的分支数量。每个分支的长度由 length = r.randint(6, 16) 随机生成。
    • 每次海龟向前走一定长度 t.forward(length),然后再向后走回到中心 t.backward(length),最后用 t.right(360 / angles) 转动海龟,确保每个分支之间均匀分布。
    • 填入:
      t.forward(length)  # 向前绘制分支
      t.backward(length)  # 向后绘制分支
      
完整代码:
import turtle as t
import random as r

r.seed(1)  # 设置随机数种子,确保每次运行生成的雪花是一样的
t.pensize(2)  # 设置画笔宽度
t.color('red')  # 画笔颜色为红色
angles = 6  # 每个雪花的分支数
points = [[0, 0], [50, 40], [70, 80], [-40, 30]]  # 雪花中心点的坐标列表

# 遍历每个雪花的中心点
for i in range(len(points)):  # 循环遍历 points 列表
    x0, y0 = points[i]  # 获取每个雪花的中心点坐标
    t.penup()  # 抬起画笔,准备移动到目标位置
    t.goto(x0, y0)  # 移动到指定的中心点位置
    t.pendown()  # 放下画笔,开始绘制

    # 随机生成雪花的半径
    length = r.randint(6, 16)  # 随机生成雪花的半径长度
    for j in range(angles):  # 绘制雪花的每个分支
        t.forward(length)  # 向前绘制分支
        t.backward(length)  # 向后绘制分支
        t.right(360 / angles)  # 每次转动360/angles度,使得每个分支之间均匀分布

t.done()  # 完成绘制,保持结果
我们把答案写回 python2ji.com 
执行一下看看:

可以看到完美显示了我们需要的图像

总结

这道题目帮助你理解如何利用 turtle 库绘制具有多个分支的图形,并结合 random 库随机生成每个分支的长度,最后通过循环控制角度,确保分支均匀分布。如果你遇到任何困难或想进一步练习,随时可以到 python2ji.com 查找类似题目,进行更多练习!

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐