不知道各位是否还记得在小学或者初中的时候,我们接触过一种语言叫做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) #注意中间是逗号,默认整个图案是四象限的
了解了上面的几个简单语句,就可以画一个八边形,比如这个图:
这个图的程序就比较灵活了:
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):
t
=
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
x
in
range
(
1
, point
*
2
+
1
):
t.forward(size)
if
x
%
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也是可以画出来美妙的图形的,比如下图:
这个图形的代码如下(代码是转载的,感谢大牛分享,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()
x
=
array([[.
5
],[.
5
]])
p
=
[
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
r
=
random()
if
r < p[
0
]:
x
=
dot(A1 , x)
+
b1
elif
r < p[
1
]:
x
=
dot(A2 , x)
+
b2
elif
r < p[
2
]:
x
=
dot(A3 , x)
+
b3
else
:
x
=
dot(A4 , x)
#print x[1]
turtle.up()
turtle.goto(x[
0
][
0
]
*
50
,x[
1
][
0
]
*
40
-
240
)
turtle.down()
turtle.dot()
|
本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1775558