1

海龟库(turtle)

  • 海龟库 (turtle) 是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。

  • 海龟库积木盒有点类似Kitten创作工具的画笔和动作积木盒的结合体,可以绘制、控制画笔移动,大家使用一下就可以体会了哦。

  • 海龟图的窗口坐标系同Kitten舞台类似,小窗口的情况下,海龟图高和宽是固定400像素。全屏的海龟图和浏览器本身的尺寸有关。

    海龟图2

  • 海龟图和math库、random库一样,需要先导入库 import turtle,才可以使用库中的函数。使用海龟库中的函数,你可以画出各种有趣的图形。

1.画笔

画笔副本

  • 对应代码:
import turtle  #导入海龟库

__Pen = turtle.Pen() 
#新建一个画笔,默认命名为__Pen;专业的话来说:将turtle.Pen()这个类实例化对对象,赋值给变量__Pen

__Pen       #__Pen就是上图中的"画笔"积木

Wood编辑器为大家默认设置了画笔(__Pen).【取这么奇怪的名字是因为希望大家新建变量的时候尽量避免使用同名变量!!!】

设置新画笔

  • 对应代码:
import turtle

t = turtle.Pen()

除了默认的画笔,也可以自己新建变量,把变量设置为新的画笔属性。

看到上面两个积木,大家可能有点疑惑了,什么对象啊,实例化啊,到底是什么意思呢?别担心慢慢听技术喵道来。

  • 画笔的概念:

    • 在前面的《函数》中我们讲到,Python中还有一种比函数更强大、更方便的数据类型,叫做“对象”。在这里,“画笔”就是一个对象。

    • 对于“对象”这个概念理解起来可能比较抽象,大家可以这样理解,其实每只画笔就是海龟图上那个小小的箭头,海龟图可以支持同时有多个画笔在运行,所以我们必须给每只画笔取个名字,后面的积木才知道到底是哪个画笔在执行命令。 画笔

    • 一般情况下大家使用咱们默认的画笔积木就可以了,如果设置了新的画笔,后面所有包含 “画笔”字样的积木,必须要告诉他们是用默认画笔,还是用新建的变量设置的画笔。

      画笔举例2

2.设置背景颜色

背景颜色

  • 对应代码:
import turtle

turtle.bgcolor("#cc66cc")
  • 含义:

    填充海龟图背景颜色,选择颜色的方式有很多种,包括:

    • 颜色下拉选项

      这样的方式非常直观,颜色会翻译成十六进制RGB颜色字符串。

      turtle.bgcolor("#cc66cc")
      #十六进制RGB颜色字符串:#后面的六个字符,分别是3个2位的十六进制数,这三个数分别代表红色、绿色、蓝色三种颜色。由这三种颜色混合,可以形成人眼可以识别的几乎各种颜色,
      

      颜色下拉选项

    • 颜色单词字符串

      选色

      Python收录了常见的各种颜色的英文单词,常用的有:

      'red', 'blue','white','green','black','purple','yellow','orange','pink'
      

      用单词字符串表示颜色,无论翻译成代码还是积木,都是单词字符串。上图积木转换成的代码是:

      turtle.bgcolor('red')
      
    • RGB颜色字符串

RGB

颜色还可以由RGB来表示,RGB分别代表红色、绿色、蓝色三种颜色,由这三种颜色混合,可以形成人眼可以识别的几乎各种颜色。

不过比较特殊的是,上面这种积木,不会在积木盒中直接出现,但是你仍然可以通过代码书写,然后转换为积木:
turtle.bgcolor(255,255,0)
  • 其他嵌套方式

    颜色积木可以塞入变量和列表某一项,可以搭配实现更多的变换和功能。

    设置颜色4

3.设置画笔颜色

画笔颜色

  • 对应代码:
import turtle

__Pen = turtle.Pen()

__Pen.pencolor("#cc66cc") #设置画笔的颜色
  • 含义:
    • 设置特定画笔的颜色。设置画笔颜色的交互规则,与“设置背景颜色”积木完全相同。
    • 可以类比Kitten创作工具中的画笔积木盒。

4.设置画笔粗细

画笔粗细

  • 对应代码:

    import turtle
    
    __Pen = turtle.Pen()
    
    __Pen.pensize(5) #设置画笔粗细
    

  • 含义:

    • 设置画笔的粗细。
    • 画笔的粗细的值为自然数。
    • 可以类比Kitten创作工具中的画笔积木盒。

5.设置画笔速度

画笔速度

  • 对应代码:

    import turtle
    
    __Pen = turtle.Pen()
    
    __Pen.speed(5) #设置画笔运行速度
    
  • 含义:

    • 设置画笔绘制的速度。

    • 画笔的速度的值为自然数。

    • 画笔的速度其实是有上限的,基本上超过10,肉眼就比较难觉察到变化了。

6.绘制圆

圆半径

  • 对应代码:

    import turtle
    
    __Pen = turtle.Pen()
    
    __Pen.circle(50) #绘制圆
    
  • 含义:

    • 用画笔绘制指定半径的圆。

    • 圆的半径可以取整数、小数,也可以取正数、负数:

      • 若半径是正数,则画笔以逆时针画圆;

      • 若半径是负数,则画笔以顺时针画圆。

7.绘制点

点半径

  • 对应代码:

    import turtle
    
    __Pen = turtle.Pen()
    
    __Pen.dot(20) #绘制直径
    
  • 含义:

    • 用画笔绘制指定直径的点。
    • 点的直径可以取整数、小数,也可以取正数、负数。
    • 若直径是负数,则画点时取其绝对值作为点的直径。

8.绘制正多边形

多边形

  • 对应代码:

    import turtle
    
    __Pen = turtle.Pen()
    
    __Pen.circle(30, steps=5) #绘制外接圆半径
    

  • 含义:

    • 用画笔绘制正多边形,所有的正多边形都有外接圆,这里用外接圆的半径来定义正多边形的大小。

      外接圆

    • 多边形的边数一般都是正整数。

    • 边数特殊情况下也可以是小数,则多边形的边无法正常闭合。

    • 外接圆半径可以取正数也可以取负数。

      • 若取正数,则逆时针画多边形;
      • 若取负数,则顺时针画多边形。

9.画笔向前/向后移动

向前

  • 对应代码:

    import turtle
    
    __Pen = turtle.Pen()
    
    __Pen.forward(100) #画笔向前移动100
    
    __Pen.backward(100) #画笔向后移动100
    

  • 含义:

    • 使画笔向前移动或向后移动。

    • 同Kitten一样,如果输入的是负数,则会向当前相反的方向移动哦~

10.画笔向左/向右旋转

向右旋转

  • 对应代码:
import turtle

__Pen = turtle.Pen()

__Pen.right(90) #画笔向右旋转

__Pen.left(90) #画笔向左旋转
  • 含义:
    • 使画笔向右或向左旋转。
    • 同Kitten一样,如果输入的是负数,则会向当前相反的方向旋转。 ​

11.画笔面向

面向

  • 对应代码:
import turtle

__Pen = turtle.Pen()

__Pen.setheading(30) #设置画笔面向特定角度
  • 含义:
    • 设置画笔朝向某个角度。

    • 海龟图的坐标系同Kitten舞台相似。右侧水平方向为0度,角度向逆时针方向增加。

      海龟图2

12.移动画笔到特定位置

移到

  • 对应代码:

    import turtle
    
    __Pen = turtle.Pen()
    
    __Pen.goto(100,100) #在一定时间内画笔移到特定的坐标位置
    

  • 含义:

    • 使画笔移到特定坐标位置。

    • 海龟图同Kitten舞台相似,正中心为坐标原点,x轴正方向为水平向右方向;y轴正方向为竖直向上方向。

    • 可以参考上面的坐标系图。

13.设置画笔坐标

坐标设置

  • 对应代码:

    import turtle
    
    __Pen = turtle.Pen()
    
    __Pen.setx(100) #设置画笔x坐标
    
    __Pen.sety(100) #设置画笔y坐标
    
  • 含义:

    • 分别设置画笔x坐标,画笔y坐标。

    • 不同于Kitten可以瞬间设置画笔x,y坐标,海龟图会有肉眼可见的移动时间。

14.设置画笔填充色

设置填充色

填充起点

  • 对应代码:

    import turtle
    
    __Pen = turtle.Pen()
    
    __Pen.fillcolor("#cc66cc") #设置图形填充颜色
    
    __Pen.begin_fill() #设置当前点为填充起点
    
    __Pen.end_fill()#设置当前点为填充终点
    

  • 含义:

    • 这三块积木经常搭配使用,可以填充海龟图绘制的形状或路径。
    • 填充色关于颜色积木的几种用法跟上面的设置背景色积木一样。
    • 如果没有设置填充颜色,会默认填充为黑色。
  • 举例:

填充色

代码:

import turtle

__Pen = turtle.Pen()

#开始进入Python的世界
__Pen.fillcolor("#cc66cc")  #设置填充色
__Pen.begin_fill() #设置为填充起点
__Pen.circle(50) #绘制一个圆
__Pen.end_fill() #设置为填充终点

15.画笔抬笔/落笔

落笔

  • 对应代码:

    import turtle
    
    __Pen = turtle.Pen()
    
    __Pen.pendown()#画笔落笔
    
    __Pen.penup() #画笔抬笔
    

  • 含义:

    • 海龟图默认画笔落笔,这点和Kitten默认抬笔是不同的哦。
    • 和Kitten类似,画笔抬笔之后,移动画笔的同时不会在画布上留下痕迹;使用“落笔”积木,可以使画笔落下,继续作画。

16.清空画笔

清空画笔

  • 对应代码:
import turtle

__Pen = turtle.Pen()

__Pen.clear() #清空画笔
  • 含义:
    • 同Kitten类似,“清空画笔”可以清空画布上由该画笔绘制的所有内容。
    • 跟Kitten不同的是,在海龟图中可以清除单只画笔所绘制的痕迹。

画笔

17.画笔文字印章

文字印章

  • 对应代码:

    import turtle
    
    __Pen = turtle.Pen()
    
    __Pen.write('Hello') #绘制文字印章
    
  • 含义:

    • 同Kitten类似,文字印章的颜色由画笔本身的颜色决定,并且经常和可以运动的积木配合使用。

    • 利用文字印章积木,可以把字符串、数字、列表打印在海龟图画布上。