Python Turtle绘图【难度2星】:横切的橙子(基础效果/画海绵层优化)
我喜欢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星】:横切的橙子(基础效果/画海绵层优化)相关推荐
- Python Turtle绘图[难度2星]:甜美棒棒糖(基础效果 / 加描边优化)
我喜欢turtle绘图,因为代码一点点的改动,总会带来意想不到的惊喜. 一些让我心动过的案例,分享给大家,也珍藏给自己. --Python教学路上的爬行者 案例1:棒棒糖(基础效果) ...
- Python Turtle 绘图[难度2星]:一朵雪花(基础代码 、 加变量/加自定义函数优化)
2022年北京冬奥会开幕式上"一朵雪花"贯穿始终,给大家印象深刻.今天我们也让海龟来绘制一朵雪花.先绘制一朵普通雪花,在下一期分享中再让海龟来绘制一朵"中国结雪花&quo ...
- Python Turtle绘图[难度3星]:24节气倒计时(2.使用字典存储数据)
"我喜欢turtle绘图,因为代码一点点的改动,总会带来意想不到的惊喜. 一些让我心动过的案例,分享给大家,也珍藏给自己." -- 初中信息技术教师 许华丽 Python Tur ...
- Python Turtle绘图 [难度2星]:古风扇子
我喜欢turtle绘图,因为代码一点点的改动,总会带来意想不到的惊喜. 一些让我心动过的案例,分享给大家,也珍藏给自己. --Python教学路上的爬行者 案例:古风扇子 难度:★★ ...
- Python Turtle绘图 [难度2星]:彩虹(分五步完成)
我喜欢turtle绘图,因为代码一点点的改动,总会带来意想不到的惊喜. 一些让我心动过的案例,分享给大家,也珍藏给自己. --Python教学路上的爬行者 彩虹是那样的美丽动人,从地的这一端跨到那一端 ...
- Python Turtle绘图[难度2星]:旋转风车(静态/动态,单色/多色)
我喜欢turtle绘图,因为代码一点点的改动,总会带来意想不到的惊喜. 一些让我心动过的案例,分享给大家,也珍藏给自己. --Python教学路上的爬行者 色彩交织的风车是春天里一道绚烂的风景线.蓝天 ...
- Python Turtle 绘图[难度2星]:浪漫蒲公英(3种画法3种难度层层递进)
北京冬奥会开幕式上除了"中国结"雪花外,还有一个浪漫元素就是蒲公英. 受此启发,我在网上搜索到蒲公英的简笔画,选了几个python绘图容易实现的简笔画作为参考,绘制出了以下三种蒲公 ...
- Python Turtle绘图[难度2星]:2行代码画爱心
我喜欢turtle绘图,因为代码一点点的改动,总会带来意想不到的惊喜. 一些让我心动过的案例,分享给大家,也珍藏给自己. --初中信息技术教师 许华丽 2月14日的情人节,不是我们中国的传统节日,所 ...
- Python Turtle绘图[难度3星]:24节气倒计时(1.使用列表存储数据)
"我喜欢turtle绘图,因为代码一点点的改动,总会带来意想不到的惊喜. 一些让我心动过的案例,分享给大家,也珍藏给自己." -- 初中信息技术教师 许华丽 2022年2月4日, ...
- Python Turtle绘图[难度2星]:餐布桌布设计(格子 / 波点)
我喜欢turtle绘图,因为代码一点点的改动,总会带来意想不到的惊喜. 一些让我心动过的案例,分享给大家,也珍藏给自己. --Python教学路上的爬行者 案例1: 餐布桌布设计1( ...
最新文章
- java 取字段_java – 获取字段的名称
- ios开发Base64编码以及加密相关学习
- python银行系统-python银行系统实现源码
- python接口自动化-参数化
- 互联网数据中心安全管理方案
- python文件目录操作方法_Python常用的文件及文件路径、目录操作方法汇总介绍
- Project Student:维护Webapp(可编辑)
- Android实例-拍摄和分享照片、分享文本(XE8+小米2)
- SDN——转控分离、CPU保护机制——COPP技术案列详解及配置命令、
- 3.2 Lucene实战:一个简单的小程序
- bootstrap table中文文档_用Python完成一件小事:自动生成文档报告
- 【100题】第十二题(特殊的递加)
- Unity3d之MonoBehaviour的可重写函数整理
- matlab表达一次函数,求指导。。。。如何用matlab拟合一次函数或者二次函数的公式和曲线。。...
- tlwn823n无线网卡驱动 linux,centos 6.5安装 TP-link TL-wn823n驱动
- 了解信息安全管理体系的基本思路
- 最新Oreo易支付源码开源版
- (附源码)计算机毕业设计SSM黄淮学院二手物品交易平台
- 如何设置锚点居页面顶部距离
- Apache Camel源码研究之Language