第二天:基本图形绘制(turtle库)
一、turtle的绘图窗体(界面)
setup(),设置窗体大小及位置,turtle.setup(width,height,startx,starty),后两个为可选参数。
setup()非必须,不设置的话就采用默认值即可
有startx,starty和没有的区别,主要在于窗体在整个屏幕的相对位置
二、空间坐标体系(以距离为导向)
1.绝对坐标(以图中心也就是小乌龟原始点为(0,0))
最常用函数:turtle.goto(x,y);ps:比如现在小乌龟头朝右,goto(-100,100),到了这个点依然头朝右
2.海龟坐标(从海龟角度来看)
如:turtle.fd(d) , 向海龟的正前方向运行
turtle.bk(d) , 向海龟的反方向运行
turtle.circle(r,angle) , 以海龟的当前位置左侧的半径为r的一个点为圆心,进行曲线运行
三、turtle角度坐标系(以角度为导向)
1.绝对角度(和绝对坐标一样)
turtle.seth(angle); seth()改变海龟行进方向,seth()只改变方向不前进,angle为如同的绝对角度
2.海龟角度,从海龟自身看。左转多少度,右转多少度
有两个函数, turtle.left(angle) turtle.right(angle)
四、RGB色彩体系
Turtle.colormode(mode) 改变色彩数值的使用。默认采用小数值,可切换整数值
1.0:RGB小数值模式
255:RGB整数值模式
2.4 turtle程序语法元素分析
1.库引用 与 import
Import 库名
库名.函数名(函数参数)
Q?这么多turtle写起来很麻烦,有更简单的方法吗?
有,使用from和import两个保留字共同完成。
from <库名> import <函数名>
from <库名> import *
但是有一个问题:第一种方法不会出现函数重名问题,第二种方法会出现
Import更多用法,
使用import和as保留字共同完成,给调用的外部库关联一个更短更适合自己的名字。
import <库名> as <库别名>
<库别名>.<函数名>(<函数参数>)
冗余代码量最少,且防止了库重名问题。
2.画笔控制函数
画笔操作后一直有效,一般成对出现。
turtle.penup() 别名 turtle.pu() 抬起画笔,海龟在飞行
turtle.pendown() 别名 turtle.pd() 落下画笔,海龟在爬行
画笔设置后一直有效,直至下次重新设置
turtle.pensize(width) 别名 turtle.width(width) 画笔宽度,海龟的腰围
turtle.pencolor(color) color为颜色字符串或rgb值 画笔颜色,海龟在涂装
3.运动控制函数(走直线/走曲线)
1.turtle.forward(d) 别名 turtle.fd(d) d为前进距离,可为负数。
2.turtle.circle(r,extent=None) 根据半径r绘制extent角度
以海龟前向方向(头朝的方向)的左侧距离r的点为圆心,绘制
例子:
方向控制函数:
(绝对角度)turtle.setheading(angle) 别名 turtle.seth(angle) 改变行进方向,海龟走角度
(海龟角度)turtle.left(angle) 海龟向左转angle度
turtle.right(angle) 海龟向右转angle度
补充知识:循环语句与range函数
1.循环语句:按照一定次数循环执行一组语句
for <变量> in range(<参数>):
<被循环执行的语句>
<变量>表示每次循环的计数,0到<次数>-1
range的参数就是循环的次数
例子:
注意:print输出有一种方式,是将你输出的各种信息中间用逗号分隔。每输出的字符串之间会增加空格。如上图实例,print语句里没有空格,但输出时,Hello和i之间有空格了。
2.range()函数,产生循环计数序列.它有两种使用方法
range(N),产生0到N-1的整数序列,共N个
range(M,N), 产生M到N-1的整数序列,共N-M个