不知道各位是否还记得在小学或者初中的时候,我们接触过一种语言叫做logo语言,这个语言可以画正方形,画三角形,画圆。而用Python画图形也有点类似logo语言的意思。


在画图之前,我们需要启动一个模块,turtple。然后在这个turtple下有一个属性叫pen,顾名思义就是画笔的意思。当输入完pen这个属性的时候,idle会打开一个叫Python Turtle Graphics的东西,在屏幕中间有一个三角的原点,这个点就有点类似logo的点,我们就是操作它来回移动留下痕迹。在idle里写完一句话,后面的Graphics就会画一道,然后再写一句话,再画一道。如果是直接的.py文件,那么就会按步骤的出现图形。

1
2
import  turtple
t = turtple.Pen()     #设定这个t就是整个的变量,注意大写P


让原点前进50个像素:t.forward(50)

让原点左转90度:t.left(90)

让原点右转30度:t.right(30)

让原点抬起来:t.up()    #这样使用forward就不会留下痕迹,因为笔在纸面上抬起来了嘛

让原点落下:t.down()

让原点是蓝色:t.color("blue")

需要使用蓝色填充图案:t.begin_fill()    #需要和上面的语句搭配

填充图案停止:t.end_fill()

清空左右图案并且原点回到原始位置:t.reset()

让原点移动到(70,100)的位置:t.goto(70,100)    #注意中间是逗号,默认整个图案是四象限的

了解了上面的几个简单语句,就可以画一个八边形,比如这个图:

wKioL1c_G8ijLP1uAABke6ok2YM677.png

这个图的程序就比较灵活了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import  time
import  turtle
#x边形内角和180*(x-3)
#函数:给出大小和顶点数绘制星星
#size:星星的核心是个等边多边形,这是该多边形的顶点到其中心的距离
#point:顶点数
def  funcDrawStar(size, point):
     =  turtle.Pen()
     #调校坐标位置
     t.up()
     t.backward( 200 )
     t.right( 90 )
     t.forward( 100 )
     t.left( 90 )
     t.down()
     #开始画图
     t.color( 1 0 0 )
     t.begin_fill()
     for  in  range ( 1 , point  *  2  +  1 ):
         t.forward(size)
         if  %  2  = =  0 :
             t.left( 120 )
         else :
             t.right( 180  *  (point  -  2 /  point  -  60 )
     t.end_fill()
     
#funcDrawStar(100, 6)
funcDrawStar( 100 9 )
 
time.sleep( 5 )




上面都是一些简单的应用,但是要知道python也是可以画出来美妙的图形的,比如下图:

wKiom1c_GEyDBxhSAAB1vJJy87k758.png


这个图形的代码如下(代码是转载的,感谢大牛分享,python 3.5亲测好使,而且整个过程非常美妙,强烈推荐各位感受一下。)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from   numpy  import  *
from  random  import  random
import  turtle
turtle.reset()
=  array([[. 5 ],[. 5 ]])
=  [ 0.85 , 0.92 , 0.99 , 1.00 ]
A1  =  array([[. 85 ,   0.04 ], [ - 0.04 ,. 85 ]])
b1  =  array([[ 0 ],[ 1.6 ]])
A2  =  array([[ 0.20 , - 0.26 ], [ 0.23 , 0.22 ]])
b2  =  array([[ 0 ],[ 1.6 ]])
A3  =  array([[ - 0.15 , 0.28 ],[ 0.26 , 0.24 ]])
b3  =  array([[ 0 ],[ 0.44 ]])
A4  =  array([[ 0 , 0 ], [ 0 , 0.16 ]])
turtle.color( "red" )
cnt  =  1
while  True :
     cnt  + =  1
     if  cnt  = =  2000 :
         break
     =  random()
     if  r < p[ 0 ]:
         =  dot(A1 , x)  +  b1
     elif  r < p[ 1 ]:
         =  dot(A2 , x)  +  b2
     elif  r < p[ 2 ]:
         =  dot(A3 , x)  +  b3
     else :
         =  dot(A4 , x)
     #print x[1]
     turtle.up()
     turtle.goto(x[ 0 ][ 0 *  50 ,x[ 1 ][ 0 *  40  -  240 )
       turtle.down()
       turtle.dot()