python之turtle库基本知识点_Python turtle库学习笔记

1.简介

Python的turtle库的易操作,对初学者十分友好。对于初学者来说,刚学编程没多久可以写出许多有趣的可视化东西,这是对学习编程极大的鼓舞,可以树立对编程学习的信心。当然turtle本身也十分有趣,可以用它画出很多奇妙的图案。

2.绘图的基本知识

(1)画布(canvas)

画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。

设置画布大小

turtle.screensize(canvwidth=None,canvheight=None,bg=None),参数分别为画布的宽(单位像素),高,背景颜色。

如:

turtle.screensize(800,600,"green")

turtle.screensize()#返回默认大小(400,300)

turtle.setup(width=0.5,height=0.75,startx=None,starty=None) 参数:width,height:输入宽和高为整数时,表示像素;为小数时,表示占据 电脑屏幕的比例,(startx,starty):这一坐标表示矩形窗口左上角顶点的位置,如果为空,则 窗口位于屏幕中心。

如:

turtle.setup(width=0.6,height=0.6)

turtle.setup(width=800,height=800,startx=100,starty=100)

(2)画笔

i)画笔的状态

在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向),turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。

ii)画笔的属性

画笔(画笔的属性,颜色、画线的宽度等)

turtle.pensize(): 设置画笔的宽度;

turtle.pencolor(): 没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green","red",也可以是RGB3元组。

turtle.speed(speed): 设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。

(3)绘图窗口的原点(0,0)在正中间。默认情况下,海龟向正右方移动。

(4)操纵海龟绘图有着许多的命令,这些命令可以划分为两种: 一种为运动命令,一种为画笔控制命令

i)运动命令:

forward(d) 向前移动距离d代表距离

backward(d) 向后移动距离d代表距离

right(degree) 向右转动多少度

left(degree) 向左转动多少度

goto(x,y) 将画笔移动到坐标为(x,y)的位置

stamp() 绘制当前图形

speed(speed) 画笔绘制的速度范围[0,10]整数

ii)画笔控制命令:

down() 画笔落下,移动时绘制图形

up() 画笔抬起,移动时不绘制图形

setheading(degree) 海龟(turtle)朝向,degree代表角度

reset() 恢复所有设置

pensize(width) 画笔的宽度

pencolor(colorstring) 画笔的颜色

fillcolor(colorstring) 绘制图形的填充颜色

circle(radius,extent) 绘制一个圆形,其中radius为半径,extent为度数,例如若extent为120,则画一个三分之一圆;

3.turtle绘图案例

(1)方形螺旋图像:

from turtle import *

for i in range(500):

forward(i)

left(91)

运行效果:

1627613-20190315002903497-855651783.png

(2)彩色螺旋图

from turtle import *colors= ['red', 'purple', 'blue', 'green', 'yellow', 'orange']for x in range(360):

pencolor(colors[x% 6])

width(x/ 100 + 1)

forward(x)

left(59)

运行效果:

1627613-20190315003622606-1940940059.jpg

(3)小猪佩奇

#coding:utf-8

from turtle import*

def nose(x,y):#鼻子

pu()

goto(x,y)

pd()

seth(-30)

begin_fill()

a=0.4

for i in range(120):if 0<=i<30 or 60<=i<90:

a=a+0.08lt(3) #向左转3度

fd(a) #向前走a的步长

else:

a=a-0.08lt(3)

fd(a)

end_fill()

pu()

seth(90)

fd(25)

seth(0)

fd(10)

pd()

pencolor(255,155,192)

seth(10)

begin_fill()

circle(5)

color(160,82,45)

end_fill()

pu()

seth(0)

fd(20)

pd()

pencolor(255,155,192)

seth(10)

begin_fill()

circle(5)

color(160,82,45)

end_fill()def head(x,y):#头

color((255,155,192),"pink")

pu()

goto(x,y)

seth(0)

pd()

begin_fill()

seth(180)

circle(300,-30)

circle(100,-60)

circle(80,-100)

circle(150,-20)

circle(60,-95)

seth(161)

circle(-300,15)

pu()

goto(-100,100)

pd()

seth(-30)

a=0.4

for i in range(60):if 0<=i<30 or 60<=i<90:

a=a+0.08lt(3) #向左转3度

fd(a) #向前走a的步长

else:

a=a-0.08lt(3)

fd(a)

end_fill()def ears(x,y): #耳朵

color((255,155,192),"pink")

pu()

goto(x,y)

pd()

begin_fill()

seth(100)

circle(-50,50)

circle(-10,120)

circle(-50,54)

end_fill()

pu()

seth(90)

fd(-12)

seth(0)

fd(30)

pd()

begin_fill()

seth(100)

circle(-50,50)

circle(-10,120)

circle(-50,56)

end_fill()def eyes(x,y):#眼睛

color((255,155,192),"white")

pu()

seth(90)

fd(-20)

seth(0)

fd(-95)

pd()

begin_fill()

circle(15)

end_fill()

color("black")

pu()

seth(90)

fd(12)

seth(0)

fd(-3)

pd()

begin_fill()

circle(3)

end_fill()

color((255,155,192),"white")

pu()

seth(90)

fd(-25)

seth(0)

fd(40)

pd()

begin_fill()

circle(15)

end_fill()

color("black")

pu()

seth(90)

fd(12)

seth(0)

fd(-3)

pd()

begin_fill()

circle(3)

end_fill()def cheek(x,y):#腮

color((255,155,192))

pu()

goto(x,y)

pd()

seth(0)

begin_fill()

circle(30)

end_fill()def mouth(x,y): #嘴

color(239,69,19)

pu()

goto(x,y)

pd()

seth(-80)

circle(30,40)

circle(40,80)def body(x,y):#身体

color("red",(255,99,71))

pu()

goto(x,y)

pd()

begin_fill()

seth(-130)

circle(100,10)

circle(300,30)

seth(0)

fd(230)

seth(90)

circle(300,30)

circle(100,3)

color((255,155,192),(255,100,100))

seth(-135)

circle(-80,63)

circle(-150,24)

end_fill()def hands(x,y):#手

color((255,155,192))

pu()

goto(x,y)

pd()

seth(-160)

circle(300,15)

pu()

seth(90)

fd(15)

seth(0)

fd(0)

pd()

seth(-10)

circle(-20,90)

pu()

seth(90)

fd(30)

seth(0)

fd(237)

pd()

seth(-20)

circle(-300,15)

pu()

seth(90)

fd(20)

seth(0)

fd(0)

pd()

seth(-170)

circle(20,90)def foot(x,y):#脚

pensize(10)

color((240,128,128))

pu()

goto(x,y)

pd()

seth(-90)

fd(40)

seth(-180)

color("black")

pensize(15)

fd(20)

pensize(10)

color((240,128,128))

pu()

seth(90)

fd(40)

seth(0)

fd(90)

pd()

seth(-90)

fd(40)

seth(-180)

color("black")

pensize(15)

fd(20)def tail(x,y):#尾巴

pensize(4)

color((255,155,192))

pu()

goto(x,y)

pd()

seth(0)

circle(70,20)

circle(10,330)

circle(70,30)def setting(): #参数设置

pensize(4)

hideturtle()

colormode(255)

color((255,155,192),"pink")

setup(840,500)

speed(10)defmain():

setting()#画布、画笔设置

nose(-100,100) #鼻子

head(-69,167) #头

ears(0,160) #耳朵

eyes(0,140) #眼睛

cheek(80,10) #腮

mouth(-20,30) #嘴

body(-32,-8) #身体

hands(-56,-45) #手

foot(2,-177) #脚

tail(148,-155) #尾巴

done() #结束

main()

main()

运行效果:

1627613-20190315004111335-997505403.jpg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值