一、海龟作图(turtle module)海龟内置模块为python内置模块,随时可用其意象为模拟海龟在沙滩上爬行而留下的足迹。
1. turtle模块是一个内置模块,从logo语言借鉴而来,当中包含的属性有:位置、方向、画笔(颜色、线条宽度等)。指令有:画笔运动命令、画笔控制命令。画笔运动命令包括:(前/后移动、左/右转动、作画速度等),画笔的控制命令有:(抬起/放下、画笔宽度、画笔颜色、填充颜色等)。
2.海龟作图的基本方法如下图:
例子1画一个等边三角形
>>> import turtle #导入turtle模块
>>> p = turtle.Pen() #创建一支画笔(海龟)
>>> p.pencolor('blue') #设置画笔颜色为蓝色
>>> p.pensize(5) #设置画笔的粗细为5
>>> p.forward(100) #最初画笔(海龟)朝向正右方,向前画长度为100的直线
>>> p.left(120) #画笔(海龟)向左转120度
>>> p.forward(100) #向前画长度100的直线
>>> p.left(120) #画笔(海龟)向左转120度
>>> p.forward(100) #向前画长度为100的直线
>>> p.left(120) #画笔(海龟)向左转120度
输出

例子2画一个正方形
>>> import turtle
>>> t = turtle.Pen()
>>> w = turtle.Screen()
>>> for i in range(4):
t.forward(100) #向前画长度100的直线
t.right(90) #向右转90度
>>> turtle.done()
输出

图3画一个五边形
>>> import turtle
>>> t = turtle.Pen()
>>> w = turtle.Screen()
>>> for i in range(5):
t.forward(100)
t.right(72)
>>> turtle.done()
输出

图4画一个五角星
>>> import turtle
>>> t = turtle.Pen()
>>> w = turtle.Screen()
>>> for i in range(5):
t.forward(100)
t.right(144)
>>> turtle.done()
输出

2.调用递归画二叉树如下图所示:
import turtle #导入turtle模块
def tree(branchLen,t): #定义函数,tree是一个递归函数它包含两个参数(branchLen,t)分别代表树干的长度和海龟或者说画笔
if branchLen > 5: #设置一个条件如果树干长度大于5就开始绘制树,因为递归有一个限度它不能无限度的延伸
t.forward(branchLen) #画树干
t.right(20)#右转20度画右边小树
tree(branchLen-15,t)#调用绘制树的函数并让树干的长度减少15调换t
t.left(40)#前面右转了20度现在左转40度刚好两边对称开始画左边小树
tree(branchLen-15,t)#调用绘制树的函数并让树干的长度减少15调换t
t.right(20)#右转20度让画笔回正保持原来的朝向
t.backward(branchLen) #往后退保证大的树干以及左右两边的小树干都回到原位置
def main(): #定义一个函数main
t = turtle.Turtle()#生成一个海龟或者说画笔
myWin = turtle.Screen()
t.left(90)#因为海龟刚开始的时候都是在正中央绘制时怕空间不够,所以先左转90度朝向正北
t.up() #抬起画笔
t.backward(100) #回退100个像素
t.down()#落下画笔
t.color('green')#画笔改为绿色
tree(100,t)#树干的长度为100
myWin.exitonclick()
print(main()) #最后调用main函数
输出

3.绘制分形图
分型的基本概念:部分与整体以某种方式相似的形体
介绍一些分型图的图形:
图1、曼德勃罗集

图2、Hilbert曲线:空间填充曲线,可以线性地贯穿二维或者更高维度的每个离散单元并进行排序和编码,可用于将高维空间中没有良好顺序的数据映射到一维空间

图3、谢尔宾斯基三角形:由3个相同的谢尔宾斯基三角形按照品字形拼叠而成

网友评论