您现在的位置是:首页 > 数码 > 

用Python的turtle画出beautiful四扇风车图

2025-07-27 01:52:33
用Python的turtle画出beautiful四扇风车图 一、简单了解turtle 1.turtle是什么? 这里引用Python官方文档的片段: 海龟绘图 海龟绘图很适合用来引导孩子学习编程。 最初来自于 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 于 1967 年所创造的 Logo 编程语言。 请想

用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库详解

  1. 画布(canvas)
    设置画布大小
    turtle.screensize(canvwidth=one, canvheight=one, bg=one),参数分别为画布的宽(单位像素), 高, 背景颜。
  2. 画笔
    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实践

学完理论的东西后,不实践的话就会很容易将其忘掉,废话不多说,直接上代码!----

1.代码片段
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,看看是否能理解(我觉得我的注释写的已经够全了,我尽力了!)

2.实例说明
  1. 导入turtle标准库
  2. 导入time标准库(用于处理时间日期的标准库)
  3. 中断执行(休眠)0.1秒,为防止无响应(应该是可以的)。
  4. 用户可根据自己需要来改变以下变量
  5. (重复)次数
  6. 弧度
  7. 概率
  8. (画笔)速度
  9. 背景颜
  10. over
  11. 开始运用变量了,设置背景颜为黑(默认)
  12. 设置速度为10(默认)
  13. 用这个if语句,是为了防止它被当做模块导入时自动执行里面的代码(即2~29行)
  14. main部分,利用for循环来画出有规律的图案
  15. 根据x的值变换画笔颜
  16. 由x的递增画出越来越大(x为半径参数)的半圆(因为extent的值为90)
  17. 用if语句来是的这里面的代码每两次(默认)执行一次
  18. 左转90°,准备移动
  19. 由于上一行左转了90°,所以现在方向不是原来方向,并朝现在方向移动x个单位长度,x递增,移动距离也随之变化
  20. 这里可能有点啰嗦,但无论怎样,目的都只是为了让画笔粗细随x缓慢递增(所以这里的代码也是可变的,默认是x/100,可以把这里的100变成其它数,越大,笔画粗细增长越慢;反之,笔画粗细增长越慢)

理解以后,这些知识就归你所属了,准备好自己去创造一场视觉盛宴吧!

三、运行效果

运行效果如下↓(默认)

四、致谢

1.知行流浪

《Python绘图Turtle库详解》
非常感谢这位博主的博客,这篇文章较详细地介绍了turtle库的用法,虽不如官方文档介绍的全面,但简单易懂,并给出了适合初学者去理解的几个实例(我也是在这里学会的Turtle)。

2.qq_14961401

《用python的turtle画炫酷的图》
这就是一场视觉盛宴!!真得非常amazing!这篇文章就是我的灵感来源,这里面有四个非常炫酷的Turtle实例,并且有一定挑战性,可以说是一片宝藏了()!

五、关于是否原创

嗯…大部分都是我写的了,代码也是的。我承认这里面也借鉴了一部分《用python的turtle画炫酷的图》里面的(背景颜和colors,就这些了),但这里也有我个人的创意,比如这里的形状,以及将其实现的逻辑部分。
况且,盗窃别人的劳动成果,是没有任何喜悦和成就感的。
此文为原创,如有雷同,纯属巧合。

六、尾声

1.祝辞(算是吧…)

我不到这会有多少人看,但我不在乎,如果看到了,那就当做涨了一个知识,交了一个朋友,放了会松…可能有点造作吧。

2.第一次

这是我第一次,人生第一次写博客,断断续续的忙活了两个半小时,终于写完了!但文中还有一些错误,或是有更好的解决方案,还请各位能大胆指出来,敝人定会虚心接受!

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/shuma/856992.html

相关标签:无
上传时间: 2024-02-10 04:45:05
留言与评论(共有 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