Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。

1、安卓小人

#!/usr/bin/env python
import turtle
aj=turtle.Pen()
y=0
aj.speed(5)
#turtle.screensize(200,800)
turtle.bgcolor("black")
#aj.shape("turtle")
def head():aj.color("green")aj.fd(160)x=aj.xcor()aj.seth(90)aj.begin_fill()#aj.color("green")aj.circle(x/2,180)aj.end_fill()aj.penup()aj.goto(33,37)aj.pendown()aj.dot(13,"black")aj.penup()aj.goto(126,37)aj.pendown()aj.dot(13,"black")aj.penup()aj.home()aj.pendown()aj.hideturtle()aj.fd(160)aj.seth(90)aj.circle(x/2,60)aj.right(90)aj.pensize(5)aj.fd(30)aj.penup()aj.home()#aj.pendown()aj.hideturtle()aj.fd(160)aj.seth(90)aj.circle(x/2,120)aj.right(90)aj.pensize(5)aj.pendown()aj.fd(30)aj.penup()aj.home()aj.penup()def body():aj.pensize(0)aj.home()aj.showturtle()aj.goto(0,-7)aj.pendown()aj.begin_fill()aj.fd(160)aj.right(90)aj.fd(120)aj.right(90)aj.fd(160)y=aj.ycor()aj.right(90)aj.fd(120)aj.end_fill()def legs():aj.penup()#turtle.color("red")aj.goto(33,-169)aj.pendown()aj.pensize(32)aj.fd(43)aj.penup()aj.goto(130,-169)aj.pendown()aj.fd(43)aj.penup()def hands():aj.home()aj.pensize(30)aj.goto(-18,-77)aj.pendown()aj.left(90)aj.fd(65)aj.penup()aj.goto(179,-77)aj.pendown()aj.fd(65)aj.penup()aj.hideturtleaj.fd(100)aj.hideturtle()aj.circle(100)aj.circle(100,360,59)aj.reset()turtle.bgcolor("black")turtle.pencolor("green")turtle.hideturtle()turtle.goto(-300,0)aj.hideturtleturtle.write("Thank you for watching....", font = ("Bodoni MT Black", 28, "bold"))turtle.penup()turtle.goto(-40,-170)turtle.pendown()turtle.pencolor("yellow")turtle.write("Developed by 一个超会写Bug的安太狼", font = ("Palatino Linotype", 22, "bold"))head()
body()
legs()
hands()
turtle.done()

效果图:

2、龙形曲线(Dragon Curve)

又叫分形龙,是一种自相似碎形曲线的统称,因形似龙的蜿蜒盘曲而得名。

# -*- coding: utf-8 -*-from turtle import *
length = 5
angle  = 90
setup(1280,720)
up()
goto(300,-100)down()
def draw_path(path):for symbol in path:if symbol == 'f':import randomcolormode(255)color(random.randint(0,255),random.randint(0,255),random.randint(0,255))fd(length)elif symbol == '-':lt(angle)elif symbol == '+':rt(angle)def apply_path(rules,path):lit = [x for x in path]for i in range(len(lit)):symbol = lit[i]if symbol == 'x':lit[i] = rules[symbol]elif symbol == 'y':lit[i] = rules[symbol]path = ''.join(lit)return pathrules = {'x':'x+yf+','y':'-fx-y'
}
path = 'fx'
speed(0)
for i in range(13):path = apply_path(rules,path)
draw_path(path)
done()

效果图:

3、樱桃树

# -*- coding: utf-8 -*-import turtletoplevel = 8  # 一共递归6层
angle = 30
rangle = 15def drawTree(length, level):turtle.left(angle)  # 绘制左枝turtle.color("black")turtle.forward(length)if level == toplevel:  # 叶子turtle.color("pink")turtle.circle(2, 360)if level < toplevel:  # 在左枝退回去之前递归drawTree(length - 10, level + 1)turtle.back(length)turtle.right(angle + rangle)  # 绘制右枝turtle.color("black")turtle.forward(length)if level == toplevel:  # 叶子turtle.color("pink")turtle.circle(2, 360)if level < toplevel:  # 在右枝退回去之前递归drawTree(length - 10, level + 1)turtle.color("black")turtle.back(length)turtle.left(rangle)turtle.left(90)
turtle.penup()
turtle.back(300)
turtle.pendown()
turtle.forward(100)
turtle.speed('fastest')
drawTree(80, 1)turtle.done()

效果图:

4、科赫雪花

import turtle as t
from turtle import *
import randomdef draw_path(path):t.colormode(255)t.color(random.randint(0,255),random.randint(0,255),random.randint(0,255))for symbol in path:if symbol == 'F':forward(length)elif symbol == '-':right(angle)elif symbol == '+':left(angle)def apply_rule(path):rule = 'F+F--F+F'return path.replace('F',rule)length = .5
angle  = 60
setup(1280,720)
bgcolor('black')
up()
color("#0fe6ca")
goto(0,0)
down()
path = 'F--F--F'
speed(0)
up()
goto(-440,-250)
down()
for i in range(5):path = apply_rule(path)
draw_path(path)
draw_path(path)
draw_path(path)
a,b = pos()
for i in range(3):up()a += 250goto(a,b)down()draw_path(path)draw_path(path)draw_path(path)
b += 220
for i in range(2):up()a -= 250goto(a,b)down()draw_path(path)draw_path(path)draw_path(path)
b += 220
for i in range(2):draw_path(path)draw_path(path)draw_path(path)up()a += 130goto(a,b)down()

效果图:

5、视觉冲击1

import turtle as t
from turtle import *angle = 60 #通过改变角度,绘制出各种多边形
t.setup(1280,720)
t.bgcolor('black')
t.pensize(2)
randomColor = ['red','blue','green','purple','gold','pink']
t.speed(0)
for i in range(600):t.color(randomColor[i%6])t.fd(i)t.rt(angle+1)
up()
color("#0fe6ca")
goto(0,0)
down()
t.done()

效果图:

6、视觉冲击2

# -*- coding: utf-8 -*-import turtle as t
from turtle import *angle = 60 #通过改变角度,绘制出各种多边形
t.bgcolor('black')
t.pensize(2)
randomColor = ['red','blue','green','purple','gold','pink']
t.speed(0)
for i in range(200):t.color(randomColor[i%6])t.circle(i)t.rt(angle+1)
up()
color("#0fe6ca")
goto(0,0)
down()

效果图:

7、视觉冲击3

from turtle import *
import timespeed(0)
colormode(255)
clrs = ["MidnightBlue", "Navy", "DarkBlue", "MediumBlue", "RoyalBlue", "MediumSlateBlue", "CornflowerBlue","DodgerBlue", "DeepskyBlue", "LightSkyBlue", "SkyBlue", "LightBlue"]time.sleep(2)for j in range(120):cn = 0c = 30f = 70for i in range(12):pencolor(clrs[cn])circle(c)left(90)penup()forward(f)right(90)pendown()c = c * 0.8f = f * 0.8circle(c)cn = cn + 1penup()goto(0, 0)forward(5)right(3)pendown()

效果图:

8、希尔伯特曲线:

# -*- coding: utf-8 -*-from turtle import *
import random
length = 10
angle  = 90
setup(1280,720)
up()goto(-640,-360)
down()
def draw_path(path):for symbol in path:if symbol == 'f':colormode(255)color(random.randint(0,255),random.randint(0,255),random.randint(0,255))fd(length)elif symbol == '+':lt(angle)elif symbol == '-':rt(angle)def apply_path(rules,path):lit = [x for x in path]for i in range(len(lit)):symbol = lit[i]if symbol == 'x':lit[i] = rules[symbol]elif symbol == 'y':lit[i] = rules[symbol]path = ''.join(lit)return pathrules = {'x':'+yf-xfx-fy+','y':'-xf+yfy+fx-'
}
path = 'x'
speed(0)
for i in range(7):path = apply_path(rules,path)
draw_path(path)
done()

效果图:

9、Sierpiński箭头曲线

# -*- coding: utf-8 -*-from turtle import *
length = 5
angle = -60
setup(1280,720)
up()goto(-640,-350)
down()
def draw_path(path):for symbol in path:if symbol == 'A' or symbol == 'B':import randomcolormode(255)color(random.randint(0,255),random.randint(0,255),random.randint(0,255))forward(length)elif symbol == '-':right(angle)elif symbol == '+':left(angle)ht()def apply_rules(path,rules):lit = [_ for _ in path]for i in range(len(lit)):symbol = lit[i]if symbol in rules:lit[i] = rules[symbol]path = ''.join(lit)return pathrules = {'A':'B-A-B','B':'A+B+A'
}
path = 'A'
speed(0)
for i in range(7):path = apply_rules(path,rules)
draw_path(path)
up()
goto(0,-340)
angle = 60
down()
draw_path(path)
up()
goto(0,-340)
angle = -60
down()
draw_path(path)

效果图:

10、Koch曲线

# -*- coding: utf-8 -*-from turtle import *
import random
length = 2
angle  = 90
setup(1280,720)
up()
goto(-600,-350)
down()
def draw_path(path):for symbol in path:if symbol == 'F':colormode(255)color(random.randint(0,255),random.randint(0,255),random.randint(0,255))forward(length)elif symbol == '-':right(angle)elif symbol == '+':left(angle)ht()def apply_rule(path):rule = 'F+F-F-F+F'return path.replace('F',rule)path = 'F'
speed(0)
for i in range(5):path = apply_rule(path)
for i in range(5):draw_path(path)
up()
goto(-478,-228)
down()
for i in range(4):draw_path(path)
up()
goto(-356,-106)
down()
for i in range(3):draw_path(path)
up()
goto(-235,16)
down()
for i in range(2):draw_path(path)
up()
goto(-115,137)
down()
draw_path(path)

效果图:

11、月亮代表我的心

# -*- coding: utf-8 -*-from turtle import *
import time
import turtle as tdef gotopos(x, y):up()goto(x, y)down()ht()def author():pensize(2)gotopos(610, -315)lt(-90)fd(80)pensize(1)lt(-270)def apply_rules(path, rules):L = [_ for _ in path]for i in range(len(L)):symbol = L[i]if symbol == 'F':L[i] = rules[symbol]if symbol == 'X':L[i] = rules[symbol]path = ''.join(L)return pathdef draw_path(path):posList, angleList = [], []for symbol in path:if symbol == 'F':t.forward(length)elif symbol == '+':t.left(angle)elif symbol == '-':t.rt(angle)elif symbol == '[':posList.append(t.pos())angleList.append(t.heading())elif symbol == 'a':t.pensize(3)t.color("#867b68")elif symbol == 'b':t.pensize(2)t.color("#867b68")elif symbol == 'c':t.pensize(2)t.color("#867b68")elif symbol == ']':t.up()t.home()t.goto(posList.pop())t.left(angleList.pop())t.down()def writez(x, y, str_, size=56, font="华文行楷"):gotopos(x, y)write(str_, font=(font, size))setup(1280, 800)
speed(5)
bgcolor("#9c917f")
color("#afa697")
begin_fill()
gotopos(0, -400)
circle(400)
end_fill()
author()
color("#7d776d")
s = "愿天化作比翼鸟"
s2 = "在地愿为连理枝"
for i in range(len(s)):writez(560, 350 - i * 50, s[i], 36)
for i in range(len(s2)):writez(460, 350 - i * 50, s2[i], 36)
color("#888475")
writez(-50, 100, "我")
writez(-50, 40, "的")
writez(-160, 0, "心", 96)
writez(-50, 0, "月", 176)
writez(33, -30, "代", 62)
writez(-18, -95, "表", 78)
writez(-213, -210, "亮", 196)gotopos(249, -26)
color("#867b68")
speed(0)
gotopos(-650, -100)
length = 6
path = 'F'
angle = 27
rules = {'F': 'aFF[b-F++F][c+F--F]c++F--F','X': 'aFF+[b+F]+[c-F]'
}for _ in range(4):path = apply_rules(path, rules)
draw_path(path)
gotopos(570, -330)
done()

效果图:

12、生则同寝 死则同穴

# -*- coding: utf-8 -*-from turtle import *
import random
import timestr_ = """
守一段情 念一个人。
时光不老 我们不散。
厮守终生 不离不弃。
天暗下来 你就是光。
亡魂溺海 止于终老。
生死挈阔 与子成说。
柔情似水 佳期如梦。
我中有你 你中有我。
青山不老 为雪白头。
心若向阳 无畏悲伤。
一人一心 白首不离。
心如荒岛 囚我终老。
我的世界 只有你懂。
你若安好 便是晴天。
心有灵犀 一点就通。
厮守海角 非你不娶。
执子的手 漫漫的走。
执子之手 与子偕老。
山河拱手 为君一笑。
红尘初妆 山河无疆。
千秋功名 一世葬你。
既不回头 何必不忘。
既然无缘 何须誓言。
今日种种 似水无痕。
明夕何夕 君已陌路。
才会相思 便害相思。
人来人往 繁华似锦。
回首万年 情衷伊人。
生能尽欢 死亦无憾。
执手若无 泪溅花上。
花开花落 人世无常。
入我心者 待以君王。
为醉而醉 似醉非醉。
伤心鸿影 爱已惘然。
只要你要 只要我有。
日久生情 日久情疏。
忧佳相随 风雨无悔。
有生之年 誓死娇宠
引喻山河 指日可诚。
水上鸳鸯 云中翡翠。
天荒地老 海誓山盟。
生则同寝 死则同穴。
生有此女 夫复何求""".split("。")
setup(1280,720)  # 设置窗口大小
colormode(255)  # 使用的颜色模式, 整数还是小数
up()
a, b = -500, 280
goto(a,b)
bgcolor("black")down()
def w(str_,b):bgcolor( random.randint(0,255),random.randint(0,255),random.randint(0,255))  # 随机生成RGB值, 每次调用函数改变背景颜色for i in range(len(str_)):up()goto(a+100*i,b)down()size =  random.randint(12,68)  # 随机字体大小color( random.randint(0,255),random.randint(0,255),random.randint(0,255))  # 随机字体颜色write(str_[i], align="center",font=("楷体",size))for k in range(4):for i in range(7):w(str_[i+7*k],b-100*i)reset()  # 清屏for i in range(7):w(str_[i+7*4],b-100*i)
up()
color("#262626;")
goto(-600,300)
write('Author:Mifen',font=("微软雅黑", 18))
goto(-600,250)
write('E-mail :2952277346@qq.com',font=("微软雅黑", 18))
goto(-600, 200)
write('Code :https://github.com/Amd794/Python123', font=("微软雅黑", 18))
goto(-600,-350)
down()
ht()

部分效果图:



未完待续

![在这里插入图片描述](https://img-blog.csdnimg.cn/2021021408574326.gif#pic_center)

Python之turtle库画各种有趣的图及源码(更新中)相关推荐

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

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

  2. Python画各种有趣的图及源码

    Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行 ...

  3. 用python的Turtle库画一个笑脸

    用python的Turtle库画一个笑脸 最近刚了解到python的turtle库,就简单的尝试一下,画一个笑脸. 效果图: 效果图看起来和原图的差别还是有点大,但是没关系,这只是一个尝试而已. 附上 ...

  4. 使用python的turtle库画表情包

    使用python的turtle库画表情包 话不多说,先上效果图,然后是代码 代码如下: import turtleturtle.penup() turtle.goto(-80,20) turtle.c ...

  5. python的turtle库画乔治

    分享一个用python的turtle库画乔治 链接:https://pan.baidu.com/s/1rIAZXGWIyk6zbDv5jlwv2g 提取码:rv6v 复制这段内容后打开百度网盘手机Ap ...

  6. 用Python的turtle库画一颗简单的树(双层递归的思想)

    用Python的turtle库画一颗简单的树(双层递归的思想) 这段时间比较闲,在CSDN上随便逛逛,看到有些用Python来绘图的程序,很有意思.于是作为Python小白的我,也自己动手尝试了一下, ...

  7. python的turtle库画一只小狐狸

    python的turtle库画一只小狐狸 from turtle import * setup(700,600,450,100)#标题输出 pensize(2) pencolor(0,0,0) pen ...

  8. 利用Python的turtle库画自行车

    利用Python的turtle库画自行车 前言 前言总得说点什么.疫情在家,慕课上学习北理工嵩天等老师的<python语言程序设计>[1],觉得turtle画图,挺有意思,既然骑不了自行车 ...

  9. 用python中的turtle库绘制一些有趣的图

    最近有个在读大学的女生,想要我帮忙用python画几个图,在画的过程中觉得有些图还挺有意思的,分享给大家.    1 图1    第一个图是蚊香,感兴趣的小伙伴可以自己尝试在python中用turtl ...

最新文章

  1. poj 2349 求MST中第S大的权值
  2. 使用MASM02 - Win32汇编语言010
  3. 计算机网络(一)计算机网络概述、组成、功能分类、性能指标 | 思维导图
  4. Myeclipse 安装Aptana3.2 插件
  5. 4.2号 作业讲解
  6. 【Flink】报错Could not forward element to next operator Buffer pool is destroyed
  7. mongodb 导出数据
  8. android dialog的封装,Android系统Dialog的简单封装
  9. [2003] Can't connect to MySQL server on 'localhost' (13) 错误解决方法 【主要是linux下php连接不上mysq时】...
  10. css3弹性盒子+小程序布局
  11. WPF中StackPanel的尺寸的怪癖
  12. 城市智慧能源系统顶层设计研究
  13. 淘宝数据集分析+可视化
  14. uniapp遮罩_uni-app 遮罩模板
  15. 数据库系统概论(第七章:数据库设计)
  16. 魔术表演的核心秘密(一)——开篇简介
  17. 影响GPS定位精度的基本概念
  18. Mac OS命令行清洗硬盘空间
  19. SAP中GR IR PGI的含义
  20. 抽象画你是不可能会了 抽象类你还可以争取一下

热门文章

  1. Android 开发的两种框架 MVC和MVP 的简单分析
  2. 望夫山[阳江民俗文化]
  3. ChinaSoft 论坛巡礼 | CCF-华为胡杨林基金-形式化方法专项论坛
  4. re模块(正则表达式)
  5. DPDK中文-查看dpdk是否支持该网卡
  6. 树立正确的金钱观---《富爸爸,穷爸爸》
  7. 做人要厚道,转帖请贴出原帖url
  8. Win10右键菜单栏目中增加新建excel的方法教学
  9. css/html 定位 绝对定位/相对定位
  10. C++求N以内所有的质数