turtle
--- 海龟绘图
概述
海龟绘图很适合用来引导孩子学习编程。最初来自于 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 于 1967 年所创造的 Logo 编程语言。
请想象绘图区有一只机器海龟,起始位置在 x-y 平面的 (0, 0) 点。先执行 import turtle
,再执行 turtle.forward(15)
,它将(在屏幕上)朝所面对的 x 轴正方向前进 15 像素,随着它的移动画出一条线段。再执行 turtle.right(25)
,它将原地右转 25 度。
通过组合使用此类命令,可以轻松地绘制出精美的形状和图案。
turtle
模块是基于 Python 标准发行版 2.5 以来的同名模块重新编写并进行了功能扩展。
新模块尽量保持了原模块的特点,并且(几乎)100%与其兼容。这就意味着初学编程者能够以交互方式使用模块的所有命令、类和方法——运行 IDLE 时注意加 -n
参数。
turtle 模块提供面向对象和面向过程两种形式的海龟绘图基本组件。由于它使用 tkinter
实现基本图形界面,因此需要安装了 Tk 支持的 Python 版本。
面向对象的接口主要使用“2+2”个类:
-
TurtleScreen
类定义图形窗口作为绘图海龟的运动场。它的构造器需要一个tkinter.Canvas
或ScrolledCanvas
作为参数。应在turtle
作为某个程序的一部分的时候使用。Screen()
函数返回一个TurtleScreen
子类的单例对象。此函数应在turtle
作为独立绘图工具时使用。作为一个单例对象,其所属的类是不可被继承的。TurtleScreen/Screen 的所有方法还存在对应的函数,即作为面向过程的接口组成部分。
-
RawTurtle
(别名:RawPen
) 类定义海龟对象在TurtleScreen
上绘图。它的构造器需要一个 Canvas, ScrolledCanvas 或 TurtleScreen 作为参数,以指定 RawTurtle 对象在哪里绘图。从 RawTurtle 派生出子类
Turtle
(别名:Pen
),该类对象在Screen
实例上绘图,如果实例不存在则会自动创建。RawTurtle/Turtle 的所有方法也存在对应的函数,即作为面向过程的接口组成部分。
from turtle import*
setup(750,500)
penup()
pensize(25)
pencolor("pink")
fd(-230)
seth(90)
pendown()
circle(-50,180)
circle(50,-180)
circle(75,-50)
circle(-190,-45)
penup()
fd(185)
seth(180)
fd(120)
seth(90)
pendown()
circle(-75,-50)
circle(190,-45)
penup()
fd(184)
seth(0)
fd(80)
seth(90)
pendown()
circle(-50,180)
circle(50,-180)
circle(75,-50)
circle(-190,-45)
penup()
fd(185)
seth(180)
fd(120)
seth(90)
pendown()
circle(-75,-50)
circle(190,-45)
penup()
fd(150)
seth(180)
fd(300)
pencolor("red")
pensize(10)
pendown()
fd(-500)
seth(90)
fd(30)
fd(-60)
seth(30)
fd(60)
seth(150)
fd(60)
done()
代码如下
from turtle import*
pencolor("red")
fillcolor("pink")
setup(800,550)
speed(5)
pensize(1)
begin_fill()
left(90)
circle(120,180)
circle(360,70)
left(38)
circle(360,70)
circle(120,180)
end_fill()
done()
想要获取更多好玩的编程、算法、AI、最新paper的内容,请关注公众号。