Python turtle库入门小练习

来源:互联网 发布:淘宝店铺运营助手在哪 编辑:程序博客网 时间:2024/06/11 08:10

表 1:turtle 库的画笔绘制状态函数(共 3 个)
函数 描述pendown() 放下画笔penup() 提起画笔,与 pendown()配对使用pensize(width) 设置画笔线条的粗细为指定大小
表 2:turtle 库的画笔运动的函数(共 13 个)
函数 描述forward() 沿着当前方向前进指定距离backward() 沿着当前相反方向后退指定距离right(angle) 向右旋转 angle 角度left(angle) 向左旋转 angle 角度goto(x,y) 移动到绝对坐标(x,y)处setx( ) 将当前 x 轴移动到指定位置sety( ) 将当前 y 轴移动到指定位置setheading(angle)设置当前朝向为 angle 角度home() 设置当前画笔位置为原点,朝向东。circle(step) 绘制一个指定半径,角度、以及绘制步骤 step 的dot(r,color) 绘制一个指定半径 r 和颜色 color 的圆点undo() 撤销画笔最后一步动作speed() 设置画笔的绘制速度,参数为 0-10 之间

表 3: turtle 库的控制画笔颜色和字体的函数(共 11 个)
函数 描述color() 设置画笔的颜色begin_fill() 填充图形前,调用该方法end_fill() 填充图形结束filling() 返回填充的状态,True 为填充,False 为未填充clear() 清空当前窗口,但不改变当前画笔的位置reset() 清空当前窗口,并重置位置等状态为默认值screensize() 设置画布的长和宽hideturtle() 隐藏画笔的 turtle 形状showturtle() 显示画笔的 turtle 形状isvisible() 如果 turtle 可见,则返回 Truewrite(str,font=None)输出 font 字体的字符串





1.绘制蟒蛇

# -*- coding: utf-8 -*-import turtledef drawSnake(rad,angle,len,neckrad):    for i in range(len):        turtle.circle(rad,angle)#rad画圆轨迹半径的长度        turtle.circle(-rad,angle)#angle沿着远行爬行的弧度值    turtle.circle(rad, 40)    turtle.fd(rad)#向前爬行rad    turtle.circle(neckrad+1,180)    turtle.fd(rad*2/3)def main():    turtle.setup(1300,800,0,0)#长为1300,宽为800的窗口,(0,0)窗口左上角在屏幕中的位置    pythonsize=30#30px    turtle.pensize(pythonsize)#轨迹宽度    turtle.pencolor("blue")#轨迹颜色    turtle.seth(-40)#出发角度    drawSnake(40,80,5,pythonsize/2)    turtle.done()main()



2.绘制五角星

# -*- coding: utf-8 -*-from random import *from math import *from turtle import *def main():    p=Turtle()    p.speed(3)    p.pensize(5)    p.pencolor("black")    p.fillcolor("yellow")    p.begin_fill()    for i in range(5):        p.forward(200)        p.right(144)    p.end_fill()    done()main()


3.利用广度优先遍历思想画树

# -*- coding: utf-8 -*-from random import *from math import *from turtle import *def tree(plist,l,a,f):    if l>2:        nextlist=[]        for p in plist:            p.forward(l)            q=p.clone()            p.left(a)            q.right(a)            nextlist.append(p)            nextlist.append(q)        tree(nextlist,l*f,a,f)def main():    p=Turtle()    p.color("green")    p.speed(10)    p.pensize(1)    p.left(90)    p.hideturtle()#隐藏箭头    p.penup()#抬笔    p.goto(-100,-100)    p.pendown()#落笔    tree([p],90,60,0.65)    done()main()


4.读取文件中的数据绘图

data.txt中:直行像素,左转(0)还是右转(1),转动的角度,颜色代码

300,0,144,1,0,0
300,0,144,0,1,0
300,0,144,0,0,1
300,0,144,1,1,0
300,0,108,0,1,1
184,0,72,1,0,1
184,0,72,0,0,0
184,0,72,0,0,0
184,0,72,0,0,0

# -*- coding: utf-8 -*-from math import *from turtle import *def main():    p=Turtle()    p.shape("turtle")#乌龟形状    result=[]    f=open("data.txt","r")    for line in f:        result.append(map(float,line.split(',')))#map表示将字符串类型的列表转化为float类型列表    for i in range(len(result)):        p.color(result[i][3],result[i][4],result[i][5])        p.fd(result[i][0])        if result[i][1]==0:            p.left(result[i][2])        else:            p.right(result[i][2])    done()main()


5.创建钟表

# -*- coding: utf-8 -*-from turtle import *from datetime import *def Skip(step):    penup()    forward(step)    pendown()#建立钟表的外框def setupClock(radius):    reset()    pensize(7)    for i in range(60):        Skip(radius)        if i%5==0:            forward(20)            Skip(-radius-20)        else:            dot(5)            Skip(-radius)        right(6)#注册turtle形状,建立名字为name的形状def makeHand(name,length):    reset()    Skip(-0.1*length)    # 开始记录多边形的顶点    begin_poly()    forward(1.1*length)    # 停止记录多边形的顶点,并与第一个顶点相连    end_poly()    #返回最后记录的多边形    handForm=get_poly()    #注册形状,命名为name    register_shape(name,handForm)def init():    global secHand,minHand,hurHand,printer    #重置turtle指针向北    mode("logo")    secHand=Turtle()    makeHand("secHand", 125)    secHand.shape("secHand")    minHand=Turtle()    makeHand("minHand", 130)    minHand.shape("minHand")    hurHand=Turtle()    makeHand("hurHand", 90)    hurHand.shape("hurHand")    #shapesize第一个参数没看到什么用,第二个参数表示几倍的长度,第3个参数表示3倍的宽度    #speed(0)是最快    for hand in secHand, minHand, hurHand:        hand.shapesize(1,1,3)        hand.speed(0)    #建立并输出文字的turtle对象,printer对象只是显示文字不显示路径,所以一直是penup和hideturtle    printer=Turtle()    printer.hideturtle()    printer.penup()def Week(t):    week=["星期一","星期二","星期三","星期四","星期五","星期六","星期七"]    return week[t.weekday()]def Day(t):    return "%s %d %d" %(t.year,t.month,t.day)def Tick():    t=datetime.today()    second=t.second+t.microsecond*0.000001    minute=t.minute+t.second/60.0    hour=t.hour+t.minute/60.0    secHand.setheading(second*6)    minHand.setheading(minute*6)    hurHand.setheading(hour*30)    tracer(False)    printer.fd(70)    printer.write(Week(t),align="center",font=("Courier", 14, "bold"))    printer.back(130)    printer.write(Day(t),align="center",font=("Courier", 14, "bold"))    printer.home()    tracer(True)    ontimer(Tick,100)#100ms后继续调用Tickdef main():    #关闭动画    tracer(False)    init()    setupClock(200)    #开启动画    tracer(True)    Tick()    done()main()


原创粉丝点击