【编程课堂】海龟作图

简介: turtle 是 python 内置的一个比较有趣味的模块,俗称 海龟作图,它是基于 tkinter 模块打造,提供一些简单的绘图工具,海龟作图最初源自 20 世纪 60 年代的 Logo 编程语言,之后一些很酷的 Python 程序员构建了 turtle 库,让其他程序员只需要 import turtle,就可以在 Python 中使用海龟作图。

0、前言


turtle  是 python 内置的一个比较有趣味的模块,俗称 海龟作图,它是基于 tkinter 模块打造,提供一些简单的绘图工具,海龟作图最初源自 20 世纪 60 年代的 Logo 编程语言,之后一些很酷的 Python 程序员构建了 turtle 库,让其他程序员只需要 import turtle,就可以在 Python 中使用海龟作图。


1、基本功能介绍


在海龟作图中,我们可以编写指令让一个虚拟的(想象中的)海龟在屏幕上来回移动。这个海龟带着一只钢笔,我们可以让海龟无论移动到哪都使用这只钢笔来绘制线条。通过编写代码,以各种很酷的模式移动海龟,我们可以绘制出令人惊奇的图片。使用海龟作图,我们不仅能够只用几行代码就创建出令人印象深刻的视觉效果,而且还可以跟随海龟看看每行代码如何影响到它的移动。这能够帮助我们理解代码的逻辑。所以海龟作图也常被用作新手学习 Python 的一种方式。


1.1 Turtle motion (运动控制)


本节中包含了运动控制中常用的一些函数

turtle.goto(x,y)

画笔定位到坐标(x,y)

turtle.forward(distance)

向正方向运动 distance 长的距离

turtle.backward(distance)

向负方向运动 distance 长的距离

turtle.right(angle)

向右偏 angle 度

turtle.left(angle)

向左偏 angle 度

turtle.home()

回到原点

turtle.circle(radius, extent=None, steps=None)

画圆形 radius 为半径,extent 为圆的角度

turtle.speed(speed)


以 speed 速度运动


看到这么多函数肯定已经头大了,我们以例题来讲解。


首先画一个边长为100的正方形,然后再以半径为50画出其3/4圆。


# 控制画笔的速度
turtle.speed(5)
# 将画笔定位到原点
turtle.goto(0,0)
# 从原点开始,画出一个边长为100的正方形
for i in range(4):
    # 正向运动 100 的距离
    turtle.forward(100)
    # 向右偏 90 度
    turtle.right(90)
# 将画笔定位到原点
turtle.home()
# 画出一个半径为100,占3/4的圆
turtle.circle(50,270)


最后得到以下结果:



1.2 Pen control (画笔控制)


本节包含了对画笔的控制函数,常用的如下:


turtle.pendown()

落笔,在此状态下会画出运动的轨迹

turtle.penup()

起笔,在此状态下不会画出运动的轨迹

turtle.pensize(width=None

画笔粗细

turtle.pencolor(*args

画笔颜色

turtle.fillcolor(*args)

填充颜色

turtle.begin_fill()

开始填充

turtle.end_fill()

结束填充

turtle.write(arg, move=False, align=”left”, font=(“Arial”, 8, “normal”))

写文字


同样,我们以一个例题来讲解。


画一个正方形并填充,最后写一些文字


# 控制画笔颜色
turtle.pencolor('red')
# 落笔
turtle.pendown()
# 设置填充颜色
turtle.fillcolor('blue')
# 开始填充
turtle.begin_fill()
# 从原点开始,画出一个边长为100的正方形
for i in range(4):
    # 正向运动 100 的距离
    turtle.forward(200)
    # 向右偏 90 度
    turtle.right(90)
    # 结束填充turtle.end_fill()
turtle.penup()
turtle.goto(100,-100)
turtle.write('Crossin编程教室')


最后的结果是这样


同时,我们还可以设置画笔打粗细、画笔的速度等属性。


1.2 Window control (视窗控制)


这里有两个常用的函数


turtle.bgcolor(*args)

设置背景颜色

turtle.bgpic(picname=None)

背景图片填充


设置代码如下


turtle.bgcolor('red')
turtle.bgpic(r'yourpic.png')


2、海龟作图实例


我们用几个简单的例子讲解海龟作图的用法。


2.1 用正方形画圆


import turtle
for i in range(360):
    turtle.setheading(i)
    for i in range(4):
        turtle.forward(100)
        turtle.left(90)


360 个正方形每隔 1 度排列,短短几行代码可以生成一个漂亮规则的图形。



2.2 红色的五角星


使用填充功能画出一个大红星


import turtle
turtle.color('red','red')
turtle.begin_fill()
for i in range(5):
    turtle.forward(100)
    turtle.right(144)
turtle.end_fill()


结果如图:



2.3 更多案例


讲的再多也不如自己动手做一做,我们在网上挑选了几张使用 turtle 做的有意思的图片,大家可以欣赏并试着做一下。



3、后记

更丰富详细的功能及知识可以参考:

官方文档https://docs.python.org/3/library/turtle.html

海龟作图—用 Python 绘图http://www.epubit.com.cn/book/onlinechapter/37788

Simple drawing with turtlehttps://opentechschool.github.io/python-beginners/en/simple_drawing.html

Hello, little turtles!http://openbookproject.net/thinkcs/python/english3e/hello_little_turtles.html
Turtle exampleshttps://michael0x2a.com/blog/turtle-examples

Easy Designs - Turtle Graphics Pythonhttp://www.instructables.com/id/Easy-Designs-Turtle-Graphics-Python/


近期文章推荐阅读:

喏,你们要的 PyCharm 快速上手指南

给伸手党的福利:Python 新手引导

只学2个月编程能写出什么代码?他们表示:You can you code!

如何用100行Python代码做出魔性声控游戏“八分音符酱”

数据分析:当赵雷唱民谣时他唱些什么?

一行代码扫出“敬业福”

我扒了杜蕾斯的微博

Python 爬虫爬取美剧网站

今天,你抢到票了吗?

爆款游戏《贪吃蛇大作战》的 Python 实现

相关文章
|
3月前
|
编解码 移动开发
MATLAB | SCI 绘图配色第八期 | 散点图 2x1 | 大鱼海棠
MATLAB | SCI 绘图配色第八期 | 散点图 2x1 | 大鱼海棠
66 0
|
3月前
|
编解码
MATLAB | SCI 绘图配色第五期 | 二维横轴柱状图 | 镇魂街
MATLAB | SCI 绘图配色第五期 | 二维横轴柱状图 | 镇魂街
46 0
|
定位技术 C++
C++实现俄罗斯方块(附代码)
C++实现俄罗斯方块(附代码)
C++实现俄罗斯方块(附代码)
|
10月前
|
数据可视化
好玩的DEM制图:等高线地形图入门与进阶
好玩的DEM制图:等高线地形图入门与进阶
72 0
|
Python
每日一练:Python代码绘制航海王草帽路飞,打饭阿姨也能跟着学会的Turtle海龟绘图系列
每日一练:Python代码绘制航海王草帽路飞,打饭阿姨也能跟着学会的Turtle海龟绘图系列
230 0
|
定位技术 Python
综合练习之海龟作图
综合练习之海龟作图
94 0
|
算法 Python
考点:角度旋转、海龟坐标轴以及简单时间绘图算法以及海龟的定时器ontimer【Python习题10】
考点:角度旋转、海龟坐标轴以及简单时间绘图算法以及海龟的定时器ontimer【Python习题10】
156 0
考点:角度旋转、海龟坐标轴以及简单时间绘图算法以及海龟的定时器ontimer【Python习题10】
|
Python
海龟绘图简单科普
著名人物爱因斯坦曾说过,兴趣是最好的老师,句话在编程方面也同样适用。大部分人如果没有所谓的情节、入门、回报的话。相对于python,很多人对这一方面都是不感冒的,更不要谈一开始就要去背某些命令、函数之类的。
110 0
|
前端开发 Python
学习笔记 | Python程序基本格式及trutle绘图函数库(奥运五环、太阳花、五角星、运动时钟、玫瑰花实例附源码)
学习笔记 | Python程序基本格式及trutle绘图函数库(奥运五环、太阳花、五角星、运动时钟、玫瑰花实例附源码)
学习笔记 | Python程序基本格式及trutle绘图函数库(奥运五环、太阳花、五角星、运动时钟、玫瑰花实例附源码)
一段ABAP作图程序,可以画一只可爱的哆啦A梦出来
一段ABAP作图程序,可以画一只可爱的哆啦A梦出来
108 0