Turtle Demo 是 Python 自带的一个演示程序,无论是 Anaconda 安装还是使用原生 Python 安装都会有这个程序。下面所使用的各种图像,都是用turtle库绘制完成的。

下面就用pycharm给大家示范几个简单的案例:

演示案例:

向日葵

import turtle

import time

turtle.speed(10)

turtle.color("red", "yellow")

turtle.begin_fill()

for _ in range(50):

turtle.forward(200)

turtle.left(170)

turtle.end_fill()

turtle.done()

效果展示:

正方形阵图

import turtle

turtle.color('black', 'red')

turtle.speed("fastest")

turtle.begin_fill()

for x in range(100):

turtle.forward(2*x)

turtle.left(90)

turtle.end_fill()

turtle.done()

效果展示:

七彩螺旋纹

import turtle

turtle.tracer(0)

turtle.pensize(2)

turtle.bgcolor("black")

colors=["red","blue","yellow","purple"]

for x in range(300):

turtle.color(colors[x%4])

turtle.forward(2*x)

turtle.left(91)

turtle.done()

效果展示:

要是想超快的绘制,把turtle.speed(“fastest”)换成turtle.tracer(0),打开直接就是结果。

Python自带Demo

启动命令:

python –m turtledemo

模式解析:

模式案例

bytedesign

from turtle import Turtle, mainloop

from time import perf_counter as clock

class Designer(Turtle):

def design(self, homePos, scale):

self.up()

for i in range(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)

def wheel(self, initpos, scale):

self.right(54)

for i in range(4):

self.pentpiece(initpos, scale)

self.down()

self.left(36)

for i in range(5):

self.tripiece(initpos, scale)

self.left(36)

for i in range(5):

self.down()

self.right(72)

self.forward(28 * scale)

self.up()

self.backward(28 * scale)

self.left(54)

self.getscreen().update()

def tripiece(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()

def pentpiece(self, initpos, scale):

oldh = self.heading()

self.up()

self.forward(29 * scale)

self.down()

for i in range(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 i in range(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()

def pentl(self, side, ang, scale):

if side < (2 * scale): return

self.forward(side)

self.left(ang)

self.pentl(side - (.38 * scale), ang, scale)

def pentr(self, side, ang, scale):

if side < (2 * scale): return

self.forward(side)

self.right(ang)

self.pentr(side - (.38 * scale), ang, scale)

def tripolyr(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)

def tripolyl(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)

def centerpiece(self, s, a, scale):

self.forward(s); self.left(a)

if s < (7.5 * scale):

return

self.centerpiece(s - (1.2 * scale), a, scale)

def main():

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()

效果展示:

chaos

from turtle import *

N = 80

def f(x):

return 3.9*x*(1-x)

def g(x):

return 3.9*(x-x**2)

def h(x):

return 3.9*x-3.9*x*x

def jumpto(x, y):

penup(); goto(x,y)

def line(x1, y1, x2, y2):

jumpto(x1, y1)

pendown()

goto(x2, y2)

def coosys():

line(-1, 0, N+1, 0)

line(0, -0.1, 0, 1.1)

def plot(fun, start, color):

pencolor(color)

x = start

jumpto(0, x)

pendown()

dot(5)

for i in range(N):

x=fun(x)

goto(i+1,x)

dot(5)

def main():

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 s in range(100):

setworldcoordinates(0.5*s,-0.1, N+1, 1.1)

return "Done!"

if __name__ == "__main__":

main()

mainloop()

效果展示:

clock

from turtle import *

from datetime import datetime

def jump(distanz, winkel=0):

penup()

right(winkel)

forward(distanz)

left(winkel)

pendown()

def hand(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)

def make_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)

def clockface(radius):

reset()

pensize(7)

for i in range(60):

jump(radius)

if i % 5 == 0:

fd(25)

jump(-radius-25)

else:

dot(3)

jump(-radius)

rt(6)

def setup():

global second_hand, minute_hand, hour_hand, writer

mode("logo")

make_hand_shape("second_hand", 125, 25)

make_hand_shape("minute_hand", 130, 25)

make_hand_shape("hour_hand", 90, 25)

clockface(160)

second_hand = Turtle()

second_hand.shape("second_hand")

second_hand.color("gray20", "gray80")

minute_hand = Turtle()

minute_hand.shape("minute_hand")

minute_hand.color("blue1", "red1")

hour_hand = Turtle()

hour_hand.shape("hour_hand")

hour_hand.color("blue3", "red3")

for hand in second_hand, minute_hand, hour_hand:

hand.resizemode("user")

hand.shapesize(1, 1, 3)

hand.speed(0)

ht()

writer = Turtle()

#writer.mode("logo")

writer.ht()

writer.pu()

writer.bk(85)

def wochentag(t):

wochentag = ["Monday", "Tuesday", "Wednesday",

"Thursday", "Friday", "Saturday", "Sunday"]

return wochentag[t.weekday()]

def datum(z):

monat = ["Jan.", "Feb.", "Mar.", "Apr.", "May", "June",

"July", "Aug.", "Sep.", "Oct.", "Nov.", "Dec."]

j = z.year

m = monat[z.month - 1]

t = z.day

return "%s %d %d" % (m, t, j)

def tick():

t = datetime.today()

sekunde = t.second + t.microsecond*0.000001

minute = t.minute + sekunde/60.0

stunde = t.hour + minute/60.0

try:

tracer(False) # Terminator can occur here

writer.clear()

writer.home()

writer.forward(65)

writer.write(wochentag(t),

align="center", font=("Courier", 14, "bold"))

writer.back(150)

writer.write(datum(t),

align="center", font=("Courier", 14, "bold"))

writer.forward(85)

tracer(True)

second_hand.setheading(6*sekunde) # or here

minute_hand.setheading(6*minute)

hour_hand.setheading(30*stunde)

tracer(True)

ontimer(tick, 100)

except Terminator:

pass # turtledemo user pressed STOP

def main():

tracer(False)

setup()

tracer(True)

tick()

return "EVENTLOOP"

if __name__ == "__main__":

mode("logo")

msg = main()

print(msg)

mainloop()

colormixer

from turtle import Screen, Turtle, mainloop

class ColorTurtle(Turtle):

def __init__(self, x, y):

Turtle.__init__(self)

self.shape("turtle")

self.resizemode("user")

self.shapesize(3,3,5)

self.pensize(10)

self._color = [0,0,0]

self.x = x

self._color[x] = y

self.color(self._color)

self.speed(0)

self.left(90)

self.pu()

self.goto(x,0)

self.pd()

self.sety(1)

self.pu()

self.sety(y)

self.pencolor("gray25")

self.ondrag(self.shift)

def shift(self, x, y):

self.sety(max(0,min(y,1)))

self._color[self.x] = self.ycor()

self.fillcolor(self._color)

setbgcolor()

def setbgcolor():

screen.bgcolor(red.ycor(), green.ycor(), blue.ycor())

def main():

global screen, red, green, blue

screen = Screen()

screen.delay(0)

screen.setworldcoordinates(-1, -0.3, 3, 1.3)

red = ColorTurtle(0, .5)

green = ColorTurtle(1, .5)

blue = ColorTurtle(2, .5)

setbgcolor()

writer = Turtle()

writer.ht()

writer.pu()

writer.goto(1,1.15)

writer.write("DRAG!",align="center",font=("Arial",30,("bold","italic")))

return "EVENTLOOP"

if __name__ == "__main__":

msg = main()

print(msg)

mainloop()

效果展示:

forest

from turtle import Turtle, colormode, tracer, mainloop

from random import randrange

from time import perf_counter as clock

def symRandom(n):

return randrange(-n,n+1)

def randomize( branchlist, angledist, sizedist ):

return [(angle+symRandom(angledist),

sizefactor*1.01**symRandom(sizedist))

for angle, sizefactor in branchlist]

def randomfd( t, distance, parts, angledist ):

for i in range(parts):

t.left(symRandom(angledist))

t.forward( (1.0 * distance)/parts )

def tree(tlist, size, level, widthfactor, branchlists, angledist=10, sizedist=5):

if level > 0:

lst = []

brs = []

for t, branchlist in list(zip(tlist,branchlists)):

t.pensize( size * widthfactor )

t.pencolor( 255 - (180 - 11 * level + symRandom(15)),

180 - 11 * level + symRandom(15),

0 )

t.pendown()

randomfd(t, size, level, angledist )

yield 1

for angle, sizefactor in branchlist:

t.left(angle)

lst.append(t.clone())

brs.append(randomize(branchlist, angledist, sizedist))

t.right(angle)

for x in tree(lst, size*sizefactor, level-1, widthfactor, brs,

angledist, sizedist):

yield None

def start(t,x,y):

colormode(255)

t.reset()

t.speed(0)

t.hideturtle()

t.left(90)

t.penup()

t.setpos(x,y)

t.pendown()

def doit1(level, pen):

pen.hideturtle()

start(pen, 20, -208)

t = tree( [pen], 80, level, 0.1, [[ (45,0.69), (0,0.65), (-45,0.71) ]] )

return t

def doit2(level, pen):

pen.hideturtle()

start(pen, -135, -130)

t = tree( [pen], 120, level, 0.1, [[ (45,0.69), (-45,0.71) ]] )

return t

def doit3(level, pen):

pen.hideturtle()

start(pen, 190, -90)

t = tree( [pen], 100, level, 0.1, [[ (45,0.7), (0,0.72), (-45,0.65) ]] )

return t

def main():

p = Turtle()

p.ht()

tracer(75,0)

u = doit1(6, Turtle(undobuffersize=1))

s = doit2(7, Turtle(undobuffersize=1))

t = doit3(5, Turtle(undobuffersize=1))

a = clock()

while True:

done = 0

for b in u,s,t:

try:

b.__next__()

except:

done += 1

if done == 3:

break

tracer(1,10)

b = clock()

return "runtime: %.2f sec." % (b-a)

if __name__ == '__main__':

main()

mainloop()

效果展示:

Screen

樱花飘落

import turtle

import random

from turtle import *

from time import sleep

t = turtle.Turtle()

w = turtle.Screen()

def tree(branchLen, t):

if branchLen > 3:

if 8 <= branchLen <= 12:

if random.randint(0, 2) == 0:

t.color('snow')

else:

t.color('lightcoral')

t.pensize(branchLen / 3)

elif branchLen < 8:

if random.randint(0, 1) == 0:

t.color('snow')

else:

t.color('lightcoral')

t.pensize(branchLen / 2)

else:

t.color('sienna')

t.pensize(branchLen / 10)

t.forward(branchLen)

a = 1.5 * random.random()

t.right(20*a)

b = 1.5 * random.random()

tree(branchLen-10*b, t)

t.left(40*a)

tree(branchLen-10*b, t)

t.right(20*a)

t.up()

t.backward(branchLen)

t.down()

def petal(m, t): # 树下花瓣

for i in range(m):

a = 200 - 400 * random.random()

b = 10 - 20 * random.random()

t.up()

t.forward(b)

t.left(90)

t.forward(a)

t.down()

t.color("lightcoral")

t.circle(1)

t.up()

t.backward(a)

t.right(90)

t.backward(b)

def petal(m, t): # 树下花瓣

for i in range(m):

a = 200 - 400 * random.random()

b = 10 - 20 * random.random()

t.up()

t.forward(b)

t.left(90)

t.forward(a)

t.down()

t.color("lightcoral")

t.circle(1)

t.up()

t.backward(a)

t.right(90)

t.backward(b)

main()

效果展示:

def demo什么意思python_Python之Turtle库Demo案例相关推荐

  1. 编写代码、打印图4-2所示的图形python_Python之turtle库画各种有趣的图及源码(更新中)_一个超会写Bug的程序猿的博客-CSDN博客...

    原文作者:一个超会写Bug的安太狼 原文标题:Python之turtle库画各种有趣的图及源码(更新中) 发布时间:2021-02-09 03:35:11 Turtle库是Python语言中一个很流行 ...

  2. Turtle库入门案例:Python一键画出海绵宝宝小可爱!!

    前文 嗨!!编程的小伙伴儿大家好,木木子又来了,不知道大家又没看我的文章得出一个结论,那就是木木子很喜欢一些有代码的文章,像:画图的 哈哈哈 自从学了python ,画图跟游戏项目的是必不可少的一个环 ...

  3. python turtle库下载_python turtle库的几个小demo

    一.先上图 一个同切圆和五角星 上代码 import turtle #同切圆 turtle.pensize(2) turtle.circle(10) turtle.circle(40) turtle. ...

  4. python创意小作品-python turtle库的几个小demo

    一.先上图 一个同切圆和五角星 上代码 import turtle #同切圆 turtle.pensize(2) turtle.circle(10) turtle.circle(40) turtle. ...

  5. 利用python的turtle库绘制玫瑰的步骤_用python turtle画玫瑰

    1.turtle 库 2.画玫瑰的代码: import turtle turtle.penup() turtle.left() turtle.fd() turtle.pendown() turtle. ...

  6. python七段数码管绘制单个数字_使用Python的turtle库实现七段数码管绘制

    七段数码管绘制: 七段数码管是由7段数码管拼接而成,每段有亮或不亮两种情况,改进的七段数码管还包括一个小数点位置. 七段数码管能形成2^7=128种状态,其中部分状态能够显示易于人们理解的数字或字母含 ...

  7. 【Python绘图】turtle库乌龟绘图官方文档详细整理

    [函数表格整理在最下方] Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面 ...

  8. 怎样用python画雪花_python使用turtle库与random库绘制雪花

    本文实例为大家分享了python绘制雪花的具体代码,供大家参考,具体内容如下 代码非常容易理解,画着玩玩还是可以的.直接上代码 # -*- coding: utf-8 -*- "" ...

  9. 用Python Turtle库画一个萌化的蜘蛛侠

    你是从什么时候开始喜欢上漫威电影的?美国队长,钢铁侠,雷神? 我先入坑的是因为看了蜘蛛侠,小时候看完就幻想着什么时候自己也能成为一个英雄,我觉得第一代蜘蛛侠刻画得是最好的,也是给我印象最深刻的一代蜘蛛 ...

最新文章

  1. 『假如我是面试官』RabbitMQ我会这样问!
  2. java开学第一周测试自我感想
  3. 如何在QT中读取串口数据
  4. (转)创建X509证书,并获取证书密钥的一点研究
  5. java构造器详解_Java中关于构造器的使用详解
  6. vscode终端进程已终止 - 问题采集
  7. n阶行列式计算----c语言实现(完结)
  8. 我的第一个 RN 项目-趣闻
  9. Ext.core.DomHelper 可以透明地操作HTML或者DOM
  10. Cocos2d-x 地图行走的实现3:A*算法
  11. JAVA阻塞队列LinkedBlockingQueue 以及非阻塞队列ConcurrentLinkedQueue 的区别
  12. 1000mx3连电脑没声音_Mac电脑没声音了怎么办?解决Mac上声音问题
  13. ORACLE 错误 904
  14. vb 获取系统声音的电平_音响系统速成方法学习资料
  15. UVM糖果爱好者教程 - 31.provides_responses?
  16. 多重背包二进制优化(wzk吃小鸡腿)
  17. 你的颜值打几分?——基于tensorflow实现人脸打分模型
  18. Unity3d之坦克大战(二)
  19. 有趣的十个Python实战项目,让你瞬间爱上Python!
  20. Python报错处理libpng warning: iCCP: cHRM chunk does not match sRGB

热门文章

  1. android 挖孔屏适配_使用Flexible实现手淘H5页面的终端适配
  2. 深度学习入门笔记(三):求导和计算图
  3. 802.11n关键技术
  4. Unity之软件在win7旗舰版上无法全屏“铺满”显示
  5. 主成分分析、因子分析及其有关的数学基础
  6. 1Tb 硬盘重做系统无法启动修复
  7. NGINX免费配置二级域名及同时开启HTTPS(HTTP强制转HTTPS)nodejs的express后端项目,前端next.js的SSR项目
  8. Matlab 如何使用hold on与hold off
  9. 阿里云URL转发类问题排查
  10. 计算机不能上网 故障分析,电脑不能上网故障排查方法教程