我喜欢turtle绘图,因为代码一点点的改动,总会带来意想不到的惊喜。

一些让我心动过的案例,分享给大家,也珍藏给自己。

——Python教学路上的爬行者


    案例1:    

    横切的橙子(基础效果)    

    难度:★★☆☆☆☆

【效果预览】

【重难点突破】

海龟绘图的时候,我们一般使用speed( )函数来控制海龟的绘图速度,但是最快的speed(0)或最慢的speed(1)还是满足不了我们的需要,该怎么办?

可以再结合使用delay( )函数 。

将speed( )和delay( )两个函数搭配使用,可以让海龟绘图速度变得更快或更慢。

如:以下设置会使海龟绘图速度变得非常快

turtle.speed(0)

turtle.delay(0)

以下设置又会使得海龟绘图速度变得非常慢

turtle.speed(1)   参数范围是0到10的整数

turtle.delay(50)  参数还可以更大,会更慢

1. speed( )函数的使用方法

语法:turtle.speed(speed=None)

作用:设置海龟移动的速度或返回当前海龟的速度。

参数:

speed – 一个 0到10 范围内的整型数或速度字符串。如speed(“fastest”)等价于speed(0)。

无参:返回当前海龟的速度

参数对应表:如果输入数值大于 10 或小于 0.5 则速度设为 0。

速度值从 1 到 10,画线和海龟转向的动画效果逐级加快。speed = 0 表示没有动画效果(转向),但绘制还是需要时间,最快。

2. delay( )函数的使用方法

语法:turtle.delay(delay=None)

作用:设置或返回以毫秒数表示的延迟值 delay。(这约等于连续两次画布刷新的间隔时间。) 绘图延迟越长,动画速度越慢。

参数:

delay – 正整型数

无参:返回以毫秒数表示的延迟值 delay

3. speed()和delay( ) 的区别

通俗点讲,speed( ) 就是海龟抬起一只脚开始跨步到落脚之间的这段距离,海龟所用时间的长短,即跨步(绘图)速度。

同一段距离,所用的时间越短,海龟跨步(绘图)速度越快;所用的时间越长,跨步(绘图)速度越慢。

delay( ) 就是海龟一只脚抬起跨步落脚后到抬起另一只脚之间的间隔时间(延迟时间)。

当参数为0时,表示没有间隔时间(延迟时间)。也就是一只脚抬起跨步落脚后就瞬间抬起另一只脚,绘图速度自然更快。

当参数大于0时,数值越大,间隔时间(延迟时间)越长。也就是一只脚抬起跨步落脚后需要等待一段时间后才抬起另一只脚,等待的时间越长,则绘图速度越慢。

 【善用“调试”功能】 

若想看清楚海龟绘图细节,除了同时设置speed( )和delay( )让海龟绘图速度慢下来,还可以使用Mu编辑器中的“调试”功能,让代码逐条执行。(如下图提示)

继续点“步进”,代码就会一条一条执行。这样我们就能更方便地分析理解每句代码的功能。

“调试”功能非常实用也强大,但往往被初学者忽视。若没有好的学习方法,Python学习会变得更艰难,所以我们要大胆去尝试,善于使用Python编辑器的调试功能。

【代码参考】

# 案例1:横切的橙子(基础效果)# 程序初始化设置
import turtle                   # 导入turtle库
turtle.bgcolor("black")         # 设置背景颜色为黑色black
turtle.speed(0)                 # 设置海龟的绘图速度。参数为0时绘图速度最快;为1时最慢;可输入不大于10的数字观察速度变化。大于10无效。# 但如果想要看清画图的细节,speed(1)的速度还是过快,这时就要使用delay()函数来帮助进一步减速。
#turtle.delay(20)               # 设置海龟绘图的延迟时间。参数为0时绘图速度最快。大于0时,数字越大,延迟时间越长,则绘图速度越慢。# 如:speed(1)  delay(20) 搭配组合,绘图速度会非常慢,可看清绘图细节。# 变量初始化赋值
d1=400                           # 变量d1 表示橙子的直径
hou=40                           # 变量hou 表示橙子果皮的厚度
num=11                           # 变量num 表示橙子果肉的瓣数
size=10                          # 变量size 是画橙子囊瓣时画笔的粗细。
d2=d1-hou                        # 变量d2 是橙子剥皮后的直径
r2=d2/2                          # 变量r2 是橙子剥皮后的半径,即扇形囊瓣的边长。# ①画橙子果皮
turtle.dot (d1,"#ff6600")        # 画直径为d1 颜色为#ff6600 的圆点# ②画橙子果肉
turtle.pensize(size)             # 设置画橙子囊瓣时画笔的粗细
turtle.pencolor("white")         # 重新设置画笔的颜色为白色white。画橙子里面的白色部分。
turtle.fillcolor("#ff9900")      # 设置填充颜色为#ff9900,即果肉的颜色为#ff9900。for i in range(num):             # 循环num次。程序初始化时,设置为几瓣就循环几次。# 画出橙子果肉的一瓣turtle.begin_fill()          # 开始填充颜色turtle.backward(r2)          # 海龟后退r2步turtle.right(90)             # 海龟向右转向90度,即圆弧切线的方向。turtle.circle (r2,360/num)   # 画一条半径为r2像素,角度为360/num度的弧线。turtle.left(90)              # 海龟向左转向90度turtle.forward(r2)           # 海龟向前移动r2步turtle.end_fill()            # 结束填充颜色# 画图结束,隐藏海龟
turtle.hideturtle()

    案例2:    

    横切的橙子(画海绵层优化)    

    难度:★★☆☆☆☆

【发现问题】

如果我们仔细观察橙子实物或图片,会发现橙子中白色部分的厚度,分布并不均匀。

并不是案例1绘图中呈现的那种效果。

靠近黄色果皮的白色部分比较厚,橙子瓣中间的白色部分又比较薄。

【链接生物】

橙子属于柑橘类。

柑橘[gān jú],是橘、柑、橙、金柑,柚、枳等的总称。

柑橘上面的白色经络叫橘络,也叫橘丝、橘筋。(也就是橘子柠檬橙子等水果皮里那层白色的东西都叫橘络。柠檬也属柑橘类。)

而靠近外果皮的白色部分是海绵层。

【效果预览】

了解了相关的生物知识后,我们知道橙子中的白色部分由海绵层和橘络构成。

海绵层较厚,橘络较薄。所以在绘图的时候,就需要分开设置画笔的粗线。

【代码参考】

# 案例2:横切的橙子(画海绵层优化)# 程序初始化设置
import turtle           # 导入turtle库
turtle.bgcolor("black") # 设置背景颜色为黑色black
turtle.speed(0)         # 设置海龟的绘图速度。参数为0时绘图速度最快;为1时最慢;大于10无效。# 但如果想要看清画图的细节,speed(1)的速度还是过快,这时就要使用delay()函数来帮助进一步减速。
#turtle.delay(20)       # 设置海龟绘图的延迟时间。参数为0时绘图速度最快。大于0时,数字越大,延迟时间越长,则绘图速度越慢。# 如:speed(1)  delay(20) 搭配组合,绘图速度会非常慢,可看清绘图细节。# 变量初始化赋值
d1=400                           # 变量d1 表示橙子的直径
hou=20                           # 变量hou 表示橙子外果皮的厚度
d2=d1-hou                        # 变量d2 是橙子剥去外果皮后橙子的直径,即果肉加海绵层(中果皮)的厚度。
d3=d1-hou-hou-hou/2              # 变量d3 是橙子剥去外果皮和海绵层后的直径,即果肉的厚度。
r3=d3/2                          # 变量r3 是橙子剥去外果皮和海绵层后的半径径,即扇形囊瓣的边长。
num=11                           # 变量num 表示橙子果肉的瓣数
size=5                           # 变量size 是画橙子囊瓣时画笔的粗细。表示白色橘络的厚度,白色橘络比白色海绵层要薄很多。# ①画橙子外果皮
turtle.dot (d1,"#ff6600")        # 画直径为d1 颜色为#ff6600 的圆点# ②画中果皮海绵层
turtle.dot(d2,"white")           # 画直径为d2 颜色为白色white 的圆点# ③画橙子果肉
turtle.pensize(size)             # 设置画橙子囊瓣时画笔的粗细。变量size表示白色橘络的厚度。
turtle.pencolor("#ffffff")       # 重新设置画笔的颜色为#ffffff白色。画白色橘络。
turtle.fillcolor("#ff9900")      # 设置填充颜色为#ff9900。即果肉的颜色为 #ff9900。
for i in range(num):             # 循环num次。程序初始化时,设置为几瓣就循环几次。# 画出橙子果肉的一瓣turtle.begin_fill()          # 开始填充颜色turtle.backward(r3)          # 海龟后退r3步turtle.right(90)             # 海龟向右转向90度。即圆弧切线的方向。turtle.circle (r3,360/num)   # 画一条半径为r3,角度为360/num度的弧线。turtle.left(90)              # 海龟向左转向90度turtle.forward(r3)           # 海龟向前移动r3步turtle.end_fill()            # 结束填充颜色# 画图结束,隐藏海龟
turtle.hideturtle()

——end——

Python Turtle绘图【难度2星】:横切的橙子(基础效果/画海绵层优化)相关推荐

  1. Python Turtle绘图[难度2星]:甜美棒棒糖(基础效果 / 加描边优化)

    我喜欢turtle绘图,因为代码一点点的改动,总会带来意想不到的惊喜. 一些让我心动过的案例,分享给大家,也珍藏给自己. --Python教学路上的爬行者    案例1:棒棒糖(基础效果)       ...

  2. Python Turtle 绘图[难度2星]:一朵雪花(基础代码 、 加变量/加自定义函数优化)

    2022年北京冬奥会开幕式上"一朵雪花"贯穿始终,给大家印象深刻.今天我们也让海龟来绘制一朵雪花.先绘制一朵普通雪花,在下一期分享中再让海龟来绘制一朵"中国结雪花&quo ...

  3. Python Turtle绘图[难度3星]:24节气倒计时(2.使用字典存储数据)

    "我喜欢turtle绘图,因为代码一点点的改动,总会带来意想不到的惊喜. 一些让我心动过的案例,分享给大家,也珍藏给自己." -- 初中信息技术教师  许华丽 Python Tur ...

  4. Python Turtle绘图 [难度2星]:古风扇子

    我喜欢turtle绘图,因为代码一点点的改动,总会带来意想不到的惊喜. 一些让我心动过的案例,分享给大家,也珍藏给自己. --Python教学路上的爬行者    案例:古风扇子       难度:★★ ...

  5. Python Turtle绘图 [难度2星]:彩虹(分五步完成)

    我喜欢turtle绘图,因为代码一点点的改动,总会带来意想不到的惊喜. 一些让我心动过的案例,分享给大家,也珍藏给自己. --Python教学路上的爬行者 彩虹是那样的美丽动人,从地的这一端跨到那一端 ...

  6. Python Turtle绘图[难度2星]:旋转风车(静态/动态,单色/多色)

    我喜欢turtle绘图,因为代码一点点的改动,总会带来意想不到的惊喜. 一些让我心动过的案例,分享给大家,也珍藏给自己. --Python教学路上的爬行者 色彩交织的风车是春天里一道绚烂的风景线.蓝天 ...

  7. Python Turtle 绘图[难度2星]:浪漫蒲公英(3种画法3种难度层层递进)

    北京冬奥会开幕式上除了"中国结"雪花外,还有一个浪漫元素就是蒲公英. 受此启发,我在网上搜索到蒲公英的简笔画,选了几个python绘图容易实现的简笔画作为参考,绘制出了以下三种蒲公 ...

  8. Python Turtle绘图[难度2星]:2行代码画爱心

    我喜欢turtle绘图,因为代码一点点的改动,总会带来意想不到的惊喜. 一些让我心动过的案例,分享给大家,也珍藏给自己. --初中信息技术教师  许华丽 2月14日的情人节,不是我们中国的传统节日,所 ...

  9. Python Turtle绘图[难度3星]:24节气倒计时(1.使用列表存储数据)

    "我喜欢turtle绘图,因为代码一点点的改动,总会带来意想不到的惊喜. 一些让我心动过的案例,分享给大家,也珍藏给自己." -- 初中信息技术教师  许华丽 2022年2月4日, ...

  10. Python Turtle绘图[难度2星]:餐布桌布设计(格子 / 波点)

    我喜欢turtle绘图,因为代码一点点的改动,总会带来意想不到的惊喜. 一些让我心动过的案例,分享给大家,也珍藏给自己. --Python教学路上的爬行者    案例1:       餐布桌布设计1( ...

最新文章

  1. java 取字段_java – 获取字段的名称
  2. ios开发Base64编码以及加密相关学习
  3. python银行系统-python银行系统实现源码
  4. python接口自动化-参数化
  5. 互联网数据中心安全管理方案
  6. python文件目录操作方法_Python常用的文件及文件路径、目录操作方法汇总介绍
  7. Project Student:维护Webapp(可编辑)
  8. Android实例-拍摄和分享照片、分享文本(XE8+小米2)
  9. SDN——转控分离、CPU保护机制——COPP技术案列详解及配置命令、
  10. 3.2 Lucene实战:一个简单的小程序
  11. bootstrap table中文文档_用Python完成一件小事:自动生成文档报告
  12. 【100题】第十二题(特殊的递加)
  13. Unity3d之MonoBehaviour的可重写函数整理
  14. matlab表达一次函数,求指导。。。。如何用matlab拟合一次函数或者二次函数的公式和曲线。。...
  15. tlwn823n无线网卡驱动 linux,centos 6.5安装 TP-link TL-wn823n驱动
  16. 了解信息安全管理体系的基本思路
  17. 最新Oreo易支付源码开源版
  18. (附源码)计算机毕业设计SSM黄淮学院二手物品交易平台
  19. 如何设置锚点居页面顶部距离
  20. Apache Camel源码研究之Language

热门文章

  1. model-based强化学习入门
  2. 六 Python 字典与集合
  3. 日语“不要”有几种说法。
  4. HDU 4585 Shaolin (STL)
  5. 用正则表达式抓取网页图片
  6. 二、爬虫 - 新浪爱问共享资源全下载之功能实现
  7. 判断div是否在可视区内
  8. docker 定时重启脚本_定时启动docker容器
  9. 句子迷,语录,苏引华
  10. 如何申请Xilinx的评估IP