python-模块-Turtle
Turtle概念
Turtle是一个简单的绘图工具。它提供了一个海龟,你可以把它理解为一个机器人,只听得懂有限的指令。
1.在文件头写上如下行,这能让我们在语句中插入中文。
#-*- coding: utf-8 -*-
2.用import turtle导入turtle库,海龟绘图属性:
- (1)位置
- (2)方向
- (3)画笔(画笔的属性,颜色、画线的宽度)
3.绘图窗口的原点(0,0)在正中间。默认情况下,海龟向正右方移动。
4.操纵海龟绘图有着许多的命令,这些命令可以划分为两种:一种为运动命令,一种为画笔控制命令。
- (1)运动命令:
forward(d) | 向前移动距离d代表距离 |
backward(d) | 向后移动距离d代表距离 |
right(degree) | 向右转动多少度 |
left(degree) | 向左转动多少度 |
goto(x,y) | 将画笔移动到坐标为(x,y)的位置 |
stamp() | 绘制当前图形 |
speed(speed) | 画笔绘制的速度范围[0,10]整数 |
- (2)画笔控制命令:
down() | 画笔落下,移动时绘制图形 |
up() | 画笔抬起,移动时不绘制图形 |
setheading(degree) | 海龟朝向,degree代表角度 |
reset() | 恢复所有设置 |
pensize(width) | 画笔的宽度 |
pencolor(colorstring) | 画笔的颜色 |
fillcolor(colorstring) | 绘制图形的填充颜色 |
fill(Ture) | - |
fill(False) | - |
circle(radius, extent) | 绘制一个圆形,其中radius为半径,extent为度数,例如若extent为180,则画一个半圆;如要画一个圆形,可不必写第二个参数 |
5.几个例子
-
1)画一个边长为60的三角形
#-*- coding: utf-8 -*- import turtle a=60 turtle.forward(a) turtle.left(120) turtle.forward(a) turtle.left(120) turtle.forward(a) turtle.left(120)
-
2)画一个边长为60的正方形,并填充为红色,边框为蓝色
#-*- coding: utf-8 -*- import turtle turtle.reset() a= 60 turtle.fillcolor("red") turtle.pencolor("blue") turtle.pensize(10) turtle.fill(True) turtle.left(90) turtle.forward(a) turtle.left(90) turtle.forward(a) turtle.left(90) turtle.forward(a) turtle.left(90) turtle.forward(a) turtle.fill(False)
-
3)这是一个可以在画布上移动画图的函数,如果学过计算机语言,这些都是很容易理解的,自己捣鼓着玩吧
#-*- coding: utf-8 -*- import turtle t = turtle.Pen() #布置画布 t.forward(200) #让画笔往前移动200,这个是有方向的,自己观察 t.left(90) t.backward(100) #让画笔后退100 t.up() #抬起画笔,休息一下 t.right(90) #让画笔的方向转一下 t.down() #放下画笔,接着画图 t.reset() #重置画布,画错了,来一张新的画布 t.clear() #清除画布上的笔迹,回到起点
-
4)画蛇
import turtle def drawSnake(rad, angle, len, neckrad): # for i in range(len): turtle.circle(rad, angle) # 画圆 rad:圆半径 angle:圆弧度 turtle.circle(-rad, angle) turtle.circle(rad, angle/2) turtle.fd(rad) # 表示直线爬行,forward, 参数表示爬行的距离 turtle.circle(neckrad+1, 180) turtle.fd(rad*2/3) def main(): turtle.setup(1300, 800, 0, 0) # 甚至窗口宽+高+起始x/y pythonsize = 100 turtle.pensize(pythonsize) # 设置笔的宽度 turtle.pencolor("red") # 设置笔的颜色 turtle.seth(-40) # 设置笔的起始角度 drawSnake(40, 80, 5, pythonsize/2) main() """" python 的调用方式 1:import 库名 调用的时:库.函数名 优点:可以更改函数中函数的名字 2, from 库名 import 函数名 """
-
5)画五角星
# 顺序结构 import turtle turtle.setup(2000, 2000, 0, 0) turtle.pensize(20) turtle.pencolor("black") turtle.seth(0) turtle.fd(400) turtle.seth(-144) turtle.fd(400) turtle.seth(-144-144) turtle.fd(400) turtle.seth(-144 - 144-144) turtle.fd(400) turtle.seth(-144 - 144-144-144) turtle.fd(400) # 循环结构1 import turtle turtle.setup(2000, 2000, 0, 0) turtle.pensize(20) turtle.pencolor("black") turtle.seth(0) length = 400 angle = 0 for i in range(5): turtle.fd(length) angle = angle - 144 turtle.seth(angle) # 循环结构2 import turtle import time turtle.color("purple") turtle.pensize(5) turtle.goto(0,0) turtle.speed(10) for i in range(6): turtle.forward(100) turtle.right(144) turtle.up() turtle.forward(100) turtle.goto(-150,-120) turtle.color("red") turtle.write("Done") time.sleep(3) # 循环递归函数 import turtle def drawFivePiontedStar(length, angle): """ Draw five_pointed_star by turtle library Initial screen ;width+height+initial position Initial pen: font+color Drawing line by recursive_function :param length: Initial five_pointed_star length :param angle: Initial position :return: None """ def drawline(length, angle): turtle.seth(angle) turtle.fd(length) turtle.setup(2000, 2000, 0, 0) turtle.pensize(20) turtle.pencolor("black") for i in range(5): drawline(length, angle) angle = angle-144 if __name__ == "__main__": drawFivePiontedStar(400, 0)
-
5)画树
import turtle def branch(length, level): """ 使用递归函数实现画树 以没有树杈为例 起始角度为90° 向左转换角45°,看有没有树杈(level) 如果没有,向右转换角90°(-45),看有没有树杈 如果没有,向右转换45°(0),返回原路 """ if level <= 0: return turtle.forward(length) turtle.left(45) branch(0.6 * length, level - 1) # 90 turtle.right(90) branch(0.6 * length, level - 1) turtle.left(45) turtle.backward(length) return if __name__ == "__main__": turtle.left(90) branch(100, 3)
-
6)绘制正方形
import turtle import time #定义绘制时画笔的颜色 turtle.color("purple") #定义绘制时画笔的线条的宽度 #turtle.size(5) turtle.pensize(5) #定义绘图的速度 turtle.speed(10) #以0,0为起点进行绘制 turtle.goto(0,0) #绘出正方形的四条边 for i in range(4): turtle.forward(100) turtle.right(90) #画笔移动到点(-150,-120)时不绘图 turtle.up() turtle.goto(-150,-120) #再次定义画笔颜色 turtle.color("red") #在(-150,-120)点上打印"Done" turtle.write("Done") time.sleep(3)
-
7)复杂的形状
from turtle import * color('red', 'yellow') begin_fill() while True: forward(200) left(170) if abs(pos()) < 1: break end_fill() done()
参考
©哈尔滨商业大学 银河统计工作室
银河统计工作室成员由在校统计、计算机部分师生和企业数据数据分析师组成,维护和开发银河统计网和银河统计博客(技术文档)。专注于数据挖掘技术研究和运用,探索统计学、应用数学和IT技术有机结合,尝试大数据条件下新型统计学教学模式。
邮箱:wanglei@hrbcu.edu.cn 关于我们