Python - 海龟图

海龟图:使用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时小海龟将瞬间移动至目标点。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值