海龟图:使用turtle模块中的对象和方法进行作图
坐标
import turtle
t = turtle.Turtle()
在边框中间白色的区域叫做画布,画布中间的小图标叫做小海龟。画布大概包含360000个点,叫做像素。
例:生成一朵带有36瓣花朵的花
import turtle
t = turtle.Turtle()
t.hideturtle()
t.color('blue','light blue')
t.begin_fill()
for i in range(36):
t.forward(200)
t.left(170)
t.end_fill()
turtle模块中方法
在任何时候小海龟都有以下的状态:位置(坐标表示)、朝向(用面朝的方向与水平线的逆时针夹角表示)、笔的状态(抬起或放下),以及颜色。
小海龟面朝东、北、西、南将分别由0度,90度,180度,270度表示。
所有的标准颜色(例如红、蓝)调剖可作为笔的颜色。
彩色插页展示了32种可以选择的颜色。
矩形
第一种函数
import turtle
def main():
t = turtle.Turtle()
t.hideturtle()
drawRectangle(t,0,0,200,150,"red")
def drawRectangle(t,x,y,w,h,colorP="black"):
##bottom-left corner(x,y)
##width w,height h
t.pencolor(colorP)
t.up()
t.goto(x,y)
t.down()
t.goto(x+w,y)
t.goto(x+w,y+h)
t.goto(x,y+h)
t.goto(x,y)
main()
第二种函数
import turtle
def main():
t = turtle.Turtle()
t.hideturtle()
drawRectangle(t,0,0,200,150,"red")
def drawRectangle(t,x,y,w,h,colorP="black"):
t.pencolor(colorP)
t.up()
t.goto(x,y)
t.down()
for i in range(2):
t.forward(w)
t.left(90)
t.forward(h)
t.left(90)
main()
例:
矩形,红色边框,黄色填充
import turtle
def main():
t = turtle.Turtle()
t.hideturtle()
drawFilledRectangle(t,0,0,100,150,"red","yellow")
def drawFilledRectangle(t,x,y,w,h,colorP="black",colorF="white"):
t.pencolor(colorP)
t.fillcolor(colorF)
t.up()
t.goto(x,y)
t.down()
t.begin_fill()
t.goto(x+w,y)
t.goto(x+w,y+h)
t.goto(x,y+h)
t.goto(x,y)
t.end_fill()
main()
旗帜
旗帜
import turtle
def main():
t = turtle.Turtle()
t.hideturtle()
drawFilledRectangle(t,0,0,150,25,"light blue","light blue")
drawFilledRectangle(t,0,25,150,50,"blue","blue")
drawFilledRectangle(t,0,75,150,25,"light blue","light blue")
drawDot(t,75,50,40,"white")
def drawFilledRectangle(t,x,y,w,h,colorP="black",colorF="white"):
t.pencolor(colorP)
t.fillcolor(colorF)
t.up()
t.goto(x,y)
t.down()
t.begin_fill()
t.goto(x+w,y)
t.goto(x+w,y+h)
t.goto(x,y+h)
t.goto(x,y)
t.end_fill()
def drawDot(t,x,y,diameter,colorP):
t.up()
t.goto(x,y)
t.pencolor(colorP)
t.dot(diameter)
main()
五角星
import turtle
def main():
t = turtle.Turtle()
t.hideturtle()
lengthOfSide = 200
drawFivePointStar(t,0,0,lengthOfSide)
def drawFivePointStar(t,x,y,lengthOfSide):
t.up()
t.goto(x,y)
t.left(36)
t.down()
for i in range(5):
t.forward(lengthOfSide)
t.left(144)
main()
write方法
如果s是一个字符串,则语句t.write(s)将会近似以当前位置作为字符串的左下角来显示字符串
语句t.write(s,align=’right’)和t.write(s,align=’center)将会分别近似以当前位置作为字符串的右下角和下方中心点来显示字符串。。
不论笔抬起或放下,write方法都会输出字符串。
注意:t.write(s)与t.write(s,align=’left)的效果相同
例:
import turtle
t = turtle.Turtle()
t.hideturtle()
t.up()
t.goto(0,60)
t.dot()
t.write("Python")
t.goto(0,30)
t.dot()
t.write("Python",align='right')
t.goto(0,0)
t.dot()
t.write("Python",align='center')
用来显示字符串的字体可以由write方法的font参数指定,参数的形式是三元组(fontName,fontSize,styleName)。
styleName的值可以是italic、bold、underline、normal
t.write("Python",font=("Courier New",12,"bold"))
一个write方法可以包含align和font参数中的一个、两个,或者都不包含。
柱状图
当一些特定的数据由柱状图来展示时,将会有助于人们的理解
import turtle
heights = [856,420,360,260,205]
def main():
t = turtle.Turtle()
t.hideturtle()
for i in range(5):
drawFilledRectangle(t,-200+(76*i),0,76,heights[i]/4,"black","light blue")
displayText(t)
def drawFilledRectangle(t,x,y,w,h,colorP="black",colorF="white"):
t.pencolor(colorP)
t.fillcolor(colorF)
t.up()
t.goto(x,y)
t.down()
t.begin_fill()
t.goto(x+w,y)
t.goto(x+w,y+h)
t.goto(x,y+h)
t.goto(x,y)
t.end_fill()
def displayText(t):
languages = ["Mandarin","Spanish","English","Hindi","Bengali"]
t.pencolor("blue")
t.up()
for i in range(5):
t.goto(-162+(76*i),heights[i]/4)
t.write(str(heights[i]),align='center',font=("Arial",10,"normal"))
t.goto(-162+(76*i),10)
t.write(languages[i],align='center',font=("Arial",10,"normal"))
t.goto(-200,-25)
t.write("Principal Languages of the World",font=("Arial",10,"normal"))
t.goto(-200,-45)
t.write('(in millions of"first language" speakers)',font=("Arial",10,"normal"))
main()
折线图
简单的表格数据可以由折线图来展示
import turtle
yValues = [10.0,7.4,6.4,5.3,4.4,3.7,2.6]
def main():
t = turtle.Turtle()
t.hideturtle()
drawLine(t,0,0,300,0)
drawLine(t,0,0,0,175)
for i in range(5):
drawLineWithDots(t,40+(40*i),15*yValues[i],40+(40*(i+1)),15*yValues[i+1],"blue")
drawTickMarks(t)
displayText(t)
def drawLine(t,x1,y1,x2,y2,colorP="black"):
t.up()
t.goto(x1,y1)
t.down()
t.pencolor(colorP)
t.goto(x2,y2)
def drawLineWithDots(t,x1,y1,x2,y2,colorP="black"):
t.pencolor(colorP)
t.up()
t.goto(x1,y1)
t.dot(5)
t.down()
t.goto(x2,y2)
t.dot(5)
def drawTickMarks(t):
for i in range(1,8):
drawLine(t,40*i,0,40*i,10)
drawLine(t,0,15*max(yValues),10,15*max(yValues))
drawLine(t,0,15*min(yValues),10,15*min(yValues))
def displayText(t):
t.pencolor("blue")
t.up()
t.goto(-3,(15*max(yValues))-10)
t.write(max(yValues),align="right")
t.goto(-3,(15*min(yValues))-10)
t.write(min(yValues),align="right")
x=40
for i in range(2000,2013,2):
t.goto(x,-20)
t.write(str(i),align='center')
x+=40
t.goto(0,-50)
t.write("Percentage of College Freshmen Who Smoke")
main()
注释
一个可选的语句t.speed(n),n是从0到10的整数。它决定了小海龟的移动速度。如果参数省略的话,速度为3.参数为0时小海龟将瞬间移动至目标点。