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

本文介绍了Python的turtle库,适合初学者入门。内容包括turtle库的基本概念,如何使用turtle进行画图,提供了代码实例,展示了运行效果,并对提供帮助的博主表达了感谢。文章强调了实践的重要性,鼓励读者动手尝试,创作自己的图形。

一、简单了解turtle

1.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怎么用呢?

2.turtle怎么用?

博主无能,只好再次借鉴他人的博客了:详情见----知行流浪的博客

Python绘图Turtle库详解

  1. 画布(canvas)
    设置画布大小
    turtle.screensize(canvwidth=None, canvheight=None, bg=None),参数分别为画布的宽(单位像素), 高, 背景颜色。
  2. 画笔
    2.1画笔的属性
    画笔(画笔的属性,颜色、画线的宽度等)
    1) turtle.pensize():设置画笔的宽度;
    2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", “red”,也可以是RGB 3元组。
    3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。
    2.3 绘图命令
    操纵海龟绘图有着许多的命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令

总之,这位博主说得很不错的,强烈建议大家去看看他的原文(链接在上面↑)
还有,我在这里也得解释几个常用指令(不然小白可能看不懂):

命令参数作用
turtle.bgcolor(*args)args – 一个颜色字符串(“red”…)或三个取值范围 0…colormode 内的数值(128, 0, 128)或一个取值范围相同的数值("#800080"…)(RGB)3元组设置背景颜色,无参数则返回背景颜色。
turtle.circle(radius, extent=None, steps=None)radius – 一个数值 extent – 一个数值 (或 None) steps – 一个整型数 (或 None)绘制一个 radius 指定半径的圆。圆心在海龟左边 radius 个单位;extent 为一个夹角,用来决定绘制圆的一部分。如未指定 extent*则绘制整个圆。如果 *extent 不是完整圆周,则以当前画笔位置为一个端点绘制圆弧。如果 radius 为正值则朝逆时针方向绘制圆弧,否则朝顺时针方向。最终海龟的朝向会依据 extent 的值而改变。圆实际是以其内切正多边形来近似表示的,其边的数量由 steps 指定。如果未指定边数则会自动确定。此方法也可用来绘制正多边形。
turtle.left(angle)和turtle.right(angle)angle – 一个数值 (整型或浮点型)海龟右(左)转 angle 个单位。(单位默认为角度)
turtle.width(width=None)width – 一个正数值设置线条的粗细为 width , 如果无参数, 则返回该值(粗细)

好了,对turtle有了一定的了解后,咱们切回正题。

二、Turtle实践

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

1.代码片段

import turtle
import time


time.sleep(0.1)   # 停止时长,具体原因不知,但这个可以防止程序运行崩溃(可能吧).


# /*以下为可变参数,除此之外,改变数据可能会导致运行不成功或影响运行效果.
colors=["red","yellow","green","blue","orange","purple"]    # 可以改,但不能乱改,取值范围要看turtle支持的颜色,可以是字符串如"green", "red",也可以是RGB 3元组.
times = 180                                                 # 重复次数,太多了需要等很长时间,太少了不震撼,180刚刚好.
extent = 90                                                 # 弧度,嗯...,举个例子,360是整圆,180是半圆,90是四分之一圆,或者就主题来说360//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, 3...),但不要大于 len(colors).
        turtle.circle(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. 背景颜色
  11. over
  12. 开始运用变量了,设置背景颜色为黑色(默认)
  13. 设置速度为10(默认)
  14. 用这个if语句,是为了防止它被当做模块导入时自动执行里面的代码(即23~29行)
  15. main部分,利用for循环来画出有规律的图案
  16. 根据x的值变换画笔颜色
  17. 由x的递增画出越来越大(x为半径参数)的半圆(因为extent的值为90)
  18. 用if语句来是的这里面的代码每两次(默认)执行一次
  19. 左转90°,准备移动
  20. 由于上一行左转了90°,所以现在方向不是原来方向,并朝现在方向移动x个单位长度,x递增,移动距离也随之变化
  21. 这里可能有点啰嗦,但无论怎样,目的都只是为了让画笔粗细随x缓慢递增(所以这里的代码也是可变的,默认是x/100,可以把这里的100变成其它数,越大,笔画粗细增长越慢;反之,笔画粗细增长越慢)

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

三、运行效果

运行效果如下↓(默认)
运行效果

四、致谢

1.知行流浪

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

2.qq_14961401

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

五、关于是否原创

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

六、尾声

1.祝辞(算是吧…)

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

2.第一次

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值