用Python的turtle画出beautiful四扇风车图
用Python的turtle画出beautiful四扇风车图
一、简单了解turtle
这里引用Python官方文档的片段:
海龟绘图
海龟绘图很适合用来引导孩子学习编程。 最初来自于 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 于 1967 年所创造的 Logo 编程语言。
请想象绘图区有一只机器海龟,起始位置在 x-y 平面的 (0, 0) 点。先执行 import turtle,再执行 turtle.forward(15),它将(在屏幕上)朝所面对的 x 轴正方向前进 15 像素,随着它的移动画出一条线段。再执行 turtle.right(25),它将原地右转 25 度。
通过组合使用此类命令,可以轻松地绘制出精美的形状和图案。
总的来说,turtle就是一个能让开发人员在计算机上轻易地画出精美的图案的Python标准库。
那,turtle怎么用呢?
博主无能,只好再次借鉴他人的博客了:详情见----知行流浪的博客
Python绘图Turtle库详解
- 画布(canvas)
设置画布大小
turtle.screensize(canvwidth=one, canvheight=one, bg=one),参数分别为画布的宽(单位像素), 高, 背景颜。- 画笔
2.1画笔的属性
画笔(画笔的属性,颜、画线的宽度等)
1) turtle.pensize():设置画笔的宽度;
2) turtle.pencolor():没有参数传入,返回当前画笔颜,传入参数设置画笔颜,可以是字符串如green, “red”,也可以是RGB 元组。
) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。
2. 绘图命令
操纵海龟绘图有着许多的命令,这些命令可以划分为种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令
…
总之,这位博主说得很不错的,强烈建议大家去看看他的原文(链接在上面↑)
还有,我在这里也得解释几个常用指令(不然小白可能看不懂):
命令 | 参数 | 作用 |
---|---|---|
turtle.bgcolor(*args) | args – 一个颜字符串(“red”…)或三个取值范围 0…colormode 内的数值(128, 0, 128)或一个取值范围相同的数值(#800080…)(RGB)元组 | 设置背景颜,无参数则返回背景颜。 |
(radius, extent=one, steps=one) | radius – 一个数值 extent – 一个数值 (或 one) steps – 一个整型数 (或 one) | 绘制一个 radius 指定半径的圆。圆心在海龟左边 radius 个单位;extent 为一个夹角,用来决定绘制圆的一部分。如未指定 extent*则绘制整个圆。如果 *extent 不是完整圆周,则以当前画笔位置为一个端点绘制圆弧。如果 radius 为正值则朝逆时针方向绘制圆弧,否则朝顺时针方向。最终海龟的朝向会依据 extent 的值而改变。圆实际是以其内切正多边形来近似表示的,其边的数量由 steps 指定。如果未指定边数则会自动确定。此方法也可用来绘制正多边形。 |
turtle.left(angle)和turtle.right(angle) | angle – 一个数值 (整型或浮点型) | 海龟右(左)转 angle 个单位。(单位默认为角度) |
turtle.width(width=one) | width – 一个正数值 | 设置线条的粗细为 width , 如果无参数, 则返回该值(粗细) |
好了,对turtle有了一定的了解后,咱们切回正题。
二、Turtle实践
学完理论的东西后,不实践的话就会很容易将其忘掉,废话不多说,直接上代码!----
import turtle
import timetime.sleep(0.1) # 停止时长,具体原因不知,但这个可以防止程序运行崩溃(可能吧).# /*以下为可变参数,除此之外,改变数据可能会导致运行不成功或影响运行效果.
colors=[red,yellow,green,blue,orange,purple] # 可以改,但不能乱改,取值范围要看turtle支持的颜,可以是字符串如green, red,也可以是RGB 元组.
times = 180 # 重复次数,太多了需要等很长时间,太少了不震撼,180刚刚好.
extent = 90 # 弧度,嗯...,举个例子,60是整圆,180是半圆,90是四分之一圆,或者就主题来说60//extent=n,那n就是n叶(扇)风车.
probability = 2 # 概率,这个你可能得先运行几遍,等看懂的时候再来改(大佬自行忽略).
speed = 10 # 画笔速度,但不包括画圆时的速度.
background_color = black # 同第九行注释,这是背景颜.
# */turtle.bgcolor(background_color)
turtle.speed(speed)if __name__ == __main__: #判断是否以主程序的形式运行(意思是,防止导入模块时自动运行for循环代码片段).for x in range(times):turtle.pencolor(colors[x%len(colors)]) # len(colors),这个没有那么死,可以改成别的(如 1, 2, ...),但不要大于 len(colors).(x,extent)if x%probability==0:turtle.left(90)turtle.forward(x)turtle.width(x*4/400)
有能力的人可以先不看P2,看看是否能理解(我觉得我的注释写的已经够全了,我尽力了!)
- 导入turtle标准库
- 导入time标准库(用于处理时间日期的标准库)
- 中断执行(休眠)0.1秒,为防止无响应(应该是可以的)。
- 用户可根据自己需要来改变以下变量
- 颜
- (重复)次数
- 弧度
- 概率
- (画笔)速度
- 背景颜
- over
- 开始运用变量了,设置背景颜为黑(默认)
- 设置速度为10(默认)
- 用这个if语句,是为了防止它被当做模块导入时自动执行里面的代码(即2~29行)
- main部分,利用for循环来画出有规律的图案
- 根据x的值变换画笔颜
- 由x的递增画出越来越大(x为半径参数)的半圆(因为extent的值为90)
- 用if语句来是的这里面的代码每两次(默认)执行一次
- 左转90°,准备移动
- 由于上一行左转了90°,所以现在方向不是原来方向,并朝现在方向移动x个单位长度,x递增,移动距离也随之变化
- 这里可能有点啰嗦,但无论怎样,目的都只是为了让画笔粗细随x缓慢递增(所以这里的代码也是可变的,默认是x/100,可以把这里的100变成其它数,越大,笔画粗细增长越慢;反之,笔画粗细增长越慢)
理解以后,这些知识就归你所属了,准备好自己去创造一场视觉盛宴吧!
三、运行效果
运行效果如下↓(默认)
四、致谢
《Python绘图Turtle库详解》
非常感谢这位博主的博客,这篇文章较详细地介绍了turtle库的用法,虽不如官方文档介绍的全面,但简单易懂,并给出了适合初学者去理解的几个实例(我也是在这里学会的Turtle)。
《用python的turtle画炫酷的图》
这就是一场视觉盛宴!!真得非常amazing!这篇文章就是我的灵感来源,这里面有四个非常炫酷的Turtle实例,并且有一定挑战性,可以说是一片宝藏了()!
五、关于是否原创
嗯…大部分都是我写的了,代码也是的。我承认这里面也借鉴了一部分《用python的turtle画炫酷的图》里面的(背景颜和colors,就这些了),但这里也有我个人的创意,比如这里的形状,以及将其实现的逻辑部分。
况且,盗窃别人的劳动成果,是没有任何喜悦和成就感的。
此文为原创,如有雷同,纯属巧合。
六、尾声
我不到这会有多少人看,但我不在乎,如果看到了,那就当做涨了一个知识,交了一个朋友,放了会松…可能有点造作吧。
这是我第一次,人生第一次写博客,断断续续的忙活了两个半小时,终于写完了!但文中还有一些错误,或是有更好的解决方案,还请各位能大胆指出来,敝人定会虚心接受!
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上一篇:灰吧!骚年!(缅怀八戒贴)
下一篇:TFIDF分词过滤,提取关键词
推荐阅读
留言与评论(共有 8 条评论) |
本站网友 100欧元等于多少人民币 | 5分钟前 发表 |
如未指定 extent*则绘制整个圆 | |
本站网友 vagaa画时代 | 19分钟前 发表 |
此文为原创,如有雷同,纯属巧合 | |
本站网友 以人为本的企业文化 | 28分钟前 发表 |
请想象绘图区有一只机器海龟,起始位置在 x-y 平面的 (0 | |
本站网友 新生儿预防针 | 3分钟前 发表 |
或者就主题来说60//extent=n | |
本站网友 李龙云 | 20分钟前 发表 |
先执行 import turtle,再执行 turtle.forward(15),它将(在屏幕上)朝所面对的 x 轴正方向前进 15 像素,随着它的移动画出一条线段 | |
本站网友 装修壁纸图片 | 22分钟前 发表 |
圆心在海龟左边 radius 个单位;extent 为一个夹角,用来决定绘制圆的一部分 | |
本站网友 治风湿药酒配方大全 | 19分钟前 发表 |
extent)if x%probability==0 |