python库之turtle库例子

2022-10-01 14:15:48

一、简单例子

1.太阳花

import turtleimport time

turtle.speed(10)#同时设置pencolor=color1, fillcolor=color2
turtle.color("red","yellow")
 
turtle.begin_fill()for _inrange(50):
    turtle.forward(200)
    turtle.left(170)
turtle.end_fill()
turtle.done()

2.螺旋方阵

import turtle
turtle.color('red','yellow')
turtle.speed("fastest")
turtle.begin_fill()for xinrange(100):
     turtle.forward(2*x)
     turtle.left(90)
turtle.end_fill()
turtle.done()

在这里插入图片描述

3.彩色螺旋

import turtle
turtle.speed("fastest")
turtle.pensize(2)
turtle.bgcolor("black")
colors=["red","blue","yellow","purple"]for xinrange(300):
    turtle.color(colors[x%4])
    turtle.forward(2*x)
    turtle.left(91)
turtle.done()

在这里插入图片描述

import turtle
turtle.speed("fastest")
turtle.pensize(2)
turtle.bgcolor("black")
turtle.color("red")for x inrange(200):
    turtle.forward(x)
    turtle.left(61)
turtle.done()

在这里插入图片描述
要是想超快的绘制,把turtle.speed("fastest")换成turtle.tracer(0),打开直接就是结果。

4.七段数码管

import turtle,timedefdrawLine(draw):
    turtle.pendown()if drawelse turtle.penup()
    turtle.fd(40)
    turtle.right(90)defdrawDight(dight):#根据数字绘制七段数码管
    drawLine(True)if dightin[2,3,4,5,6,8,9]else drawLine(False)
    drawLine(True)if dightin[0,1,3,4,5,6,7,8,9]else drawLine(False)
    drawLine(True)if dightin[0,2,3,5,6,8,9]else drawLine(False)
    drawLine(True)if dightin[0,2,6,8]else drawLine(False)
    turtle.left(90)
    drawLine(True)if dightin[0,4,5,6,8,9]else drawLine(False)
    drawLine(True)if dightin[0,2,3,5,6,7,8,9]else drawLine(False)
    drawLine(True)if dightin[0,1,2,3,4,7,8,9]else drawLine(False)
    turtle.left(180)
    turtle.penup()#为绘制后续数字确定位置
    turtle.fd(20)#为绘制后续数字确定位置defdrawDate(date):
    turtle.pencolor("red")for iin date:if i=='-':
            turtle.write('年',font=("Arial",18,"normal"))
            turtle.pencolor("green")
            turtle.fd(40)elif i=='=':
            turtle.write('月',font=("Arial",18,"normal"))
            turtle.pencolor("blue")
            turtle.fd(40)elif i=='+':
            turtle.write('日',font=("Arial",18,"normal"))else:
            drawDight(eval(i))defmain():
    turtle.speed(10)
    turtle.setup(800,350,200,200)
    turtle.penup()
    turtle.fd(-300)
    turtle.pensize(5)
    drawDate(time.strftime('%Y-%m=%d+',time.gmtime()))
    turtle.hideturtle()
    turtle.done()
main()

二、官方例子

1.打开方法

turtledemo 包汇集了一组演示脚本。在cmd命令行中打入

python -m turtledemo

在这里插入图片描述

在这里插入图片描述

2.bytedesign

from turtleimport Turtle, mainloopfrom timeimport perf_counteras clock# wrapper for any additional drawing routines# that need to know about each otherclassDesigner(Turtle):defdesign(self, homePos, scale):
        self.up()for iinrange(5):
            self.forward(64.65* scale)
            self.down()
            self.wheel(self.position(), scale)
            self.up()
            self.backward(64.65* scale)
            self.right(72)
        self.up()
        self.goto(homePos)
        self.right(36)
        self.forward(24.5* scale)
        self.right(198)
        self.down()
        self.centerpiece(46* scale,143.4, scale)
        self.getscreen().tracer(True)defwheel(self, initpos, scale):
        self.right(54)for iinrange(4):
            self.pentpiece(initpos, scale)
        self.down()
        self.left(36)for iinrange(5):
            self.tripiece(initpos, scale)
        self.left(36)for iinrange(5):
            self.down()
            self.right(72)
            self.forward(28* scale)
            self.up()
            self.backward(28* scale)
        self.left(54)
        self.getscreen().update()deftripiece(self, initpos, scale):
        oldh= self.heading()
        self.down()
        self.backward(2.5* scale)
        self.tripolyr(31.5* scale, scale)
        self.up()
        self.goto(initpos)
        self.setheading(oldh)
        self.down()
        self.backward(2.5* scale)
        self.tripolyl(31.5* scale, scale)
        self.up()
        self.goto(initpos)
        self.setheading(oldh)
        self.left(72)
        self.getscreen().update()defpentpiece(self, initpos, scale):
        oldh= self.heading()
        self.up()
        self.forward(29* scale)
        self.down()for iinrange(5):
            self.forward(18* scale)
            self.right(72)
        self.pentr(18* scale,75, scale)
        self.up()
        self.goto(initpos)
        self.setheading(oldh)
        self.forward(29* scale)
        self.down()for iinrange(5):
            self.forward(18* scale)
            self.right(72)
        self.pentl(18* scale,75, scale)
        self.up()
        self.goto(initpos)
        self.setheading(oldh)
        self.left(72)
        self.getscreen().update()defpentl(self, side, ang, scale):if side<(2* scale):return
        self.forward(side)
        self.left(ang)
        self.pentl(side-(.38* scale), ang, scale)defpentr(self, side, ang, scale):if side<(2* scale):return
        self.forward(side)
        self.right(ang)
        self.pentr(side-(.38* scale), ang, scale)deftripolyr(self, side, scale):if side<(4* scale):return
        self.forward(side)
        self.right(111)
        self.forward(side/1.78)
        self.right(111)
        self.forward(side/1.3)
        self.right(146)
        self.tripolyr(side*.75, scale)deftripolyl(self, side, scale):if side<(4* scale):return
        self.forward(side)
        self.left(111)
        self.forward(side/1.78)
        self.left(111)
        self.forward(side/1.3)
        self.left(146)
        self.tripolyl(side*.75, scale)defcenterpiece(self, s, a, scale):
        self.forward(s); self.left(a)if s<(7.5* scale):return
        self.centerpiece(s-(1.2* scale), a, scale)defmain():
    t= Designer()
    t.speed(0)
    t.hideturtle()
    t.getscreen().delay(0)
    t.getscreen().tracer(0)
    at= clock()
    t.design(t.position(),2)
    et= clock()return"runtime: %.2f sec."%(et-at)if __name__=='__main__':
    msg= main()print(msg)
    mainloop()

在这里插入图片描述

3.chaos

from turtleimport*

N=80deff(x):return3.9*x*(1-x)defg(x):return3.9*(x-x**2)defh(x):return3.9*x-3.9*x*xdefjumpto(x, y):
    penup(); goto(x,y)defline(x1, y1, x2, y2):
    jumpto(x1, y1)
    pendown()
    goto(x2, y2)defcoosys():
    line(-1,0, N+1,0)
    line(0,-0.1,0,1.1)defplot(fun, start, color):
    pencolor(color)
    x= start
    jumpto(0, x)
    pendown()
    dot(5)for iinrange(N):
        x=fun(x)
        goto(i+1,x)
        dot(5)defmain():
    reset()
    setworldcoordinates(-1.0,-0.1, N+1,1.1)
    speed(0)
    hideturtle()
    coosys()
    plot(f,0.35,"blue")
    plot(g,0.35,"green")
    plot(h,0.35,"red")# Now zoom in:for sinrange(100):
        setworldcoordinates(0.5*s,-0.1, N+1,1.1)return"Done!"if __name__=="__main__":
    main()
    mainloop()

在这里插入图片描述

4.clock

from turtleimport*from datetimeimport datetimedefjump(distanz, winkel=0):
    penup()
    right(winkel)
    forward(distanz)
    left(winkel)
    pendown()defhand(laenge, spitze):
    fd(laenge*1.15)
    rt(90)
    fd(spitze/2.0)
    lt(120)
    fd(spitze)
    lt(120)
    fd(spitze)
    lt(120)
    fd(spitze/2.0)defmake_hand_shape(name, laenge, spitze):
    reset()
    jump(-laenge*0.15)
    begin_poly()
    hand(laenge, spitze)
    end_poly()
    hand_form= get_poly()
    register_shape(name, hand_form)defclockface(radius):
    reset()
    pensize(7)for iinrange(60):
        jump(radius)if i%5==0:
            fd(25)
            jump(-radius-25
  • 作者:sandalphon4869
  • 原文链接:https://blog.csdn.net/sandalphon4869/article/details/99632566
    更新时间:2022-10-01 14:15:48