2 Python图形绘制

2.1 深入理解Python语言

Python特点与优势:强制可读性、较少的底层语法元素、多种编程方式、支持中文字符、代码量少、13万第三方库、避免重复造轮子、开放共享

2.2 实例2:Python蟒蛇绘制

问题分析:设计蟒蛇的基本形状

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#PythonDraw.py
import turtle
turtle.setup(650, 350, 200, 200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
turtle.circle(40, 80)
turtle.circle(-40, 80)
turtle.circle(40, 80/2)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2/3)
turtle.done()

引入会图库 turtle

2.3 模块I:turtle库的应用

turtle库是turtle绘图体系的Python实现,Python语言的标准库之一

turtled的绘图窗体:使用的最小绘图元素是像素。

绝对坐标系(以画布中心为原点):

海龟坐标系(以海龟位置为原点的坐标系)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
turtle.setup(width, height, startx, starty)
# 宽度,高度,起始点坐标(窗体左上角位置相对于屏幕左上角的坐标),不是必须的函数
turtle.goto(x,y)
# 让海龟移动到目标坐标点
turtle.fd(d)
# 前进d的距离
turtle.bk(d)
# 返回d的距离
turtle.circle(r,angle)
turtle.circle(r,extent=None)
# 在前进方向左侧画圈
turtle.seth(angle)
# 改变前进方向,angle为绝对读书
turtle.left(angle)
turtle.right(angle)
# 改变前进方向,angle为相对角度
turtle.colormode(mode)
# RGB色彩模式,1.0,255
1
2
3
4
5
6
7
8
turtle.penup() 
turtle.pu()
# 提起画笔(不画)
turtle.pendown
# 放下画笔(画)
turtle.pensize(width)
turtle.width(width)
turtle.pencolor(color) #color 为RGB值或者颜色字符串
  • for 和 in 保留字:循环语句

    1
    2
    for i in range(5)
    # i = 0,1,2,3,4
  • range(N) 产生从0到N-1的整数序列

    range(M, N)产生从M到N-1的整数序列

2.Practice

  • n边形的绘制

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # PythonDraw.py
    import turtle
    side = 40
    n = 8
    turtle.penup()
    turtle.fd(-100)
    turtle.pendown()
    turtle.pensize(10)
    turtle.pencolor("blue")
    turtle.seth(0)
    for i in range(n):
    turtle.fd(side)
    turtle.right(360/n)
    turtle.done()
  • turtle叠边形绘制

1
2
3
4
5
6
7
8
9
10
11
12
13
import turtle
side = 200
n = 8
turtle.penup()
turtle.goto(-100,-50)
turtle.pendown()
turtle.pensize(10)
turtle.pencolor("blue")
turtle.seth(0)
for i in range(9):
turtle.fd(side)
turtle.left(80)
turtle.done()
  • turtle 风轮绘制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#PythonDraw.py
import turtle
radius = 150
n = 8
turtle.penup()
turtle.goto(-100,-50)
turtle.pendown()
turtle.seth(0)

for i in range(4):
turtle.fd(radius)
turtle.right(90)
turtle.circle(-radius,45)
turtle.goto(-100,-50)
turtle.seth(90*(i+1))

turtle.done()