turtle程序语法分析
1.库引用与import
turtle蟒蛇绘制实例代码:
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()
库引用:扩充Python程序功能的方式
-①使用import保留字完成,采用,()编码风格
import<库名>
<库名>.<函数名>(<函数参数>)
-import更多用法
-②使用from和import保留字共同完成
from<库名>import<函数名>
from<库名>import*
<函数名>(<函数参数>)
此时对上述函数有如下改造:
from turtle import*
setup(650,350,200,200)
penup
fd(-250)
pendown()
pensize(25)
pencolor("purple")
seth(-40)
for i in range(4):
circle(40,80)
circle(-40,80)
circle(40,80/2)
fd(40)
circle(16,180)
fd(40*2/3)
done()
以上两种方法各有利弊
import<库名>
*** <库名>.<函数名>(<函数参数>)***
在以上方法中,由于<库名>.<函数名>加起来是新程序中的函数名,这种形式本身就是一个统一的名字,不会出先函数名重复问题
*** from<库名>import<函数名>***
from<库名>import*
<函数名>(<函数参数>)
在该方法中,由于<函数名>便是一个函数,那么库中的函数可能会出现与用户自定义的函数名称一致,函数名称冲突,导致程序运行的不一致
将以上两种方式通盘考虑,形成了新的库引用方法:
-③使用import和as保留字共同完成
import<库名>as<库名>
<库别名>.<函数名>(<函数参数>)
简单来说就是将库起了一个小名,用这个小名来调用函数,在使用过程中***<库别名>.<函数名>***也构成了程序中的独立名字
这种方式我们冗余的代码量最少,同时也防止了库重名的问题
代码改写如下:
import turtle as t
t.setup(650.350.200.200)
t.penup()
t.fd(-250)
t.pendown()
t.pensize(25)
t.pencolor("purple")
t.seth(-40)
for i in range(4):
t.circle(40,80)
t.circle(-40,80)
t.circle(40,80/2)
t.fd(40)
t.circle(16,180)
t.fd(40*2/3)
t.done()
–给调用的外部库编写一个更短、更适合自己的名字会给程序带来很多便利。
2.turtle画笔控制函数
以Python蟒蛇绘制为例,我们使用了
penup() pendown()
pensize() pencolor()
四种画笔控制函数,画笔操作后一直有效,一般成对出现( 如penup()&pendown() )一般来讲我们用penup()让海鬼“飞”到某个位置,然后用pendown()产生轨迹
turtle.pensize(width)别名turtle.width(width)用来设置海龟的“腰围”
turtle.pencolor(color)中color为颜色字符串或r,g,b值,用来改变画笔的颜色
-颜色字符串:
turtle.pencolor("purple")
注意此时purple是字符串形式而且要用小写
-RGB的小数值:
turtle.pencolor(0.63,0.13,0.94)
-RGB的元组值:
turtle.pencolor((0.63,0.13,0.94))
3.turtle运动控制函数
fd() circle()
-turtle.forword(d) 别名 turtle.fd(d)
向前行走,海龟走直线(这里不难想到bk是向后走啦,和d为负数效果一样)
-turtle.circle(r,extent=None)
根据半径r绘制extent角度的弧形
-r:默认圆心在海龟左侧r距离的位置,下面给出两个例子:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cOGJ8vwI-1640841885731)(C:\Users\administration\AppData\Roaming\Typora\typora-user-images\image-20211230124715646.png)]
4.turtle方向控制函数
控制海龟面对方向:绝对角度&海龟角度(两套体系)
turtle.setheading(angle) 别名 turtle.seth(angle)
-angle:改变行进方向,海龟走角度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FJQjKuEV-1640841885733)(C:\Users\administration\AppData\Roaming\Typora\typora-user-images\image-20211230125243224.png)]
在海龟角度下:
turtle.left(angle)海龟向左转
turtle.right(angle)海龟向右转
注意:方向控制函数只改变海龟的行进角度而不改变海龟的运动状态
5.基本循环语句
-for 和 in 保留字
for <变量> in range(<参数>)
<被循环执行的语句>
-<变量>表示每次循环的计数,0到<次数>-1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yjEClFBc-1640841885733)(C:\Users\administration\AppData\Roaming\Typora\typora-user-images\image-20211230130329278.png)]
range()函数
产生计数序列:
-range(N)
产生从0到N-1的整数序列,共N个
range(5)
0,1,2,3,4
-range(M,N)
产生从M到N-1的整数序列,共N-M个
range(2,5)
2, 3, 4
6.Python蟒蛇绘制代码分析
import turtle //调用库函数
turtle.setup(650.350.200.200) //设置窗口大小和位置
turtle.penup() //海龟飞行
turtle.fd(-250) //以绝对方向坐标向后250个像素
turtle.pendown//海龟落地,开始产生画迹
turtle.pensize(25) //设置海龟“腰围”25
turtle.pencolor("purple") //设置海龟颜色紫色
turtle.seth(-40) //以绝对角度调整-40°
for i in range(4): //执行“爬行”循环
turtle.circle(40,80)
turtle.circle(-40,80)
turtle.circle(40,80/2)
turtle.fd(40) //向前40
turtle.circle(16,180) //以其左侧距离16为圆心,画弧度180的圆
turtle.fd(40*2/3)
turtle.done()