Turtle绘制菱形-第11届蓝桥杯选拔赛Python真题精选

news2024/9/22 11:29:06

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第16讲。

Turtle绘制菱形,本题是2019年12月15日举办的第11届蓝桥杯青少组Python编程选拔赛真题,题目要求使用Turtle绘制一个复合图形,中间是半径为 120 的圆,四周是边长为80的12个菱形。

先来看看题目的要求吧。

一.题目说明

提示信息:

识别出图形中的基本形状,以基本形状为单位绘制出最终图形。绘制所示图形,中间是半径为120的圆,四周是边长为80的12个菱形。

图片

编程实现:

使用 turtle 绘制如图中所示的图形。

1). 背景为白色,中间圆为红色轮廓线,不填充;

2). 图中菱形的长对角线延长线经过圆心(如图中虛线所示,虚线不用绘制);

3). 菱形为黑色轮廓线、黄色填充,其中锐角为60度;

4). 绘图过程中隐藏面笔,能清楚地看到图形绘制过程。

评分标准:

下列各评分项单独计分 ,累加评判,共计25个计分点。

  • 4 分:正确绘制出一个半径为 120 的不填充、红色圆形;

  • 6分:正确绘制出一个边长为80、锐角为60度的黄色填充、黑色轮廓的菱形;

  • 9分:正确绘制出 12 个相同的菱形,且其长对角线的延长线经过圆心(图中虚线不用绘制);

  • 6分:绘制图形如图所示,菱形方向正确、均匀分布、画笔隐藏,且能看到绘制过程。

二.思路分析

这是一道海龟画图的题目,考查的知识点主要包括Turtle的基本使用、循环和函数等。

分析效果图,我们可以将图形分成如下两个部分:

  • 红色圆形

  • 12个菱形

对于圆形的绘制,比较简单,直接使用Turtle提供的circle()方法即可,趁这个机会,我们一起认识一下circle()方法吧。

turtle.circle(radius, extent=None, steps=None)

3个参数作用如下:

  • radius:指定半径的圆;

  • extent:表示夹角,用来决定绘制圆的一部分,默认是360;

  • steps:表示内切正多边形的边数,用于绘制正多边形;

有两点需要注意:

1). radius可以设置为负值, radius为正时小海龟沿逆时针方向绘制圆弧,为负数时则朝顺时针方向;

2). 圆实际是以其内切正多边形来近似表示的,其边的数量由 steps 指定。如果未指定边数则会自动确定,此时绘制的就是圆,设置steps的值,可用来快速绘制正多边形,非常的方便。

所以,绘制红色的圆,只需要使用如下代码即可:

t.color("red")t.circle(120)

绘制效果如下:

图片

效果还不错,但是有一个小问题,就是圆没有处在中心位置,小海龟也没有回到圆心位置,不利于接下来的菱形绘制。

所以,在绘制圆形之前,需要先将圆心移到(0,-120)的位置,圆形画完后再移回到(0,0)处。

菱形的绘制是本题的难点,我们需要分两步来解决:

1). 绘制1个菱形

2). 绘制12个菱形

绘制单个菱形时,需要搞清楚旋转的角度,菱形的4个角并不完全相等,而是两两相等,其中两个锐角是60度,两个钝角为120度。

因此,绘制的使用,需要先画两条边,然后重复两次,代码如下:​​​​​​​

 for i in range(2):    t.forward(120)    t.right(60)    t.forward(120)    t.right(120)

为了方便,我们可以定义一个函数用于绘制菱形,然后调用函数来绘制12个菱形。

12个菱形刚好围成一圈,如果将1个菱形当作是一条边,就相当于是绘制一个正12边形,根据之前介绍的万能公式:

图片

每绘制一个菱形,旋转30度即可。

这里的关键点在于绘制12个菱形时,旋转点在圆心(0,0)位置,所以我们每次都要从(0,0)开始,沿着当前方向前进120到达圆周位置,绘制一个菱形,然后再回到(0,0)位置,一定要确保回到圆形位置旋转。

思路有了,接下来,我们就进入具体的编程实现环节。

三.编程实现

根据上面的思路分析,我们分3步来编写程序:

  • 定义函数绘制菱形

  • 绘制红色圆形

  • 绘制12个菱形

1. 定义函数绘制菱形

根据前面的思路分析,我们定义函数如下:

图片

代码不难,需要强调3点:

1). 题目要求方向正确,小海龟默认面向右方(方向为0),但是正右方的菱形对角线水平向右,所以需要先左转30度,绘制完成之后需要右转30度,恢复到初始方向;

2). color()方法有两个参数,分别表示边框颜色和填充颜色,如果只给一个参数,则表示两者颜色相同,你也可以使用pencolor()和fillcolor()单独设置;

3). 必须要在绘制之前调用begin_fill(),在绘制完成后调用end_fill()。

2. 绘制红色圆形

这一步比较简单,重点是要调整小海龟的位置,继续编写代码如下:

图片

需要注意一点,移动时需要先抬笔,移动完成后再落笔,避免画出多余的线段。

3. 绘制12个菱形

使用循环,调用函数绘制12个菱形,代码如下:

图片

代码不难理解,强调两点:

1). 绘制菱形之前,要将小海龟移到圆周位置,绘制完后要回到中心位置,一定要先抬笔,再移动,然后落笔;

2). 注意t.right(30)的位置,一定是在回到中心点才能右转。

运行程序,效果如下:

图片

至此,整个程序就全部完成了,效果还不错吧。

四.总结与思考

本题的分数为25分,代码在30行左右,涉及到的知识点包括:

  • 循环语句,主要是for...in循环;

  • turtle的基本使用;

  • 函数的定义及使用;

题目难度中等,难点在于如何沿着红色的圆周绘制12个菱形。这不仅需要学生熟练掌握turtle的各种基本用法,同时还要求能够分析图形的规律,找到通用的解决方法,将问题简化,这其实就是逻辑思维能力。

在绘制多个相同图形时,一定要注意复位,也就是说绘制完一个图形之后,要确保小海龟回到初始位置,包括坐标和方向,这样才能确保后续的旋转是正确的。

你还有什么好的想法和创意吗,也非常欢迎和超平老师分享探讨。

如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄

需要源码的,可以移步至“超平的编程课”gzh。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1311695.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

bugku--- 比赛真题1-3

第一题 查看源代码直接就有 第二题 万能密码直接填 第三题

Vue2.x源码:new Vue()做了啥

例子1new Vue做了啥?new Vue做了啥,源码解析 initMixin函数 初始化 – 初始化Vue实例的配置initLifecycle函数 – 初始化生命周期钩子函数initEvents – 初始化事件系统初始化渲染 initRender初始化inject选项 例子1 <div id"app"><div class"home&…

JVM之堆学习

一、Java虚拟机内存结构图 二、堆的介绍 1. 前面学习的程序计数器&#xff0c;虚拟机栈和本地方法栈都是线程私有的&#xff0c;堆是线程共享的&#xff1b; 2. 通过 new 关键字&#xff0c;创建的对象都会使用堆内存&#xff0c;其特点是&#xff1a; 它是线程共享的&#x…

pytorch文本分类(二):引入pytorch处理文本数据

pytorch文本数据处理 目录 pytorch文本数据处理1. Pytorch背景2. 数据分割3. 数据加载Dataset代码分析字典的用途代码修改的目的 Dataloader 4. 练习 原学习任务链接 相关数据链接&#xff1a;https://pan.baidu.com/s/1iwE3LdRv3uAkGGI2fF9BjA?pwdro0v 提取码&#xff1a;ro…

flume系列之:监控flume agent channel的填充百分比

flume系列之:监控flume agent channel的填充百分比 一、监控效果二、获取flume agent三、飞书告警四、获取每个flume agent channel的填充百分比一、监控效果 二、获取flume agent def getKafkaFlumeAgent():# 腾讯云10.130.112.60zk = KazooClient(hosts

CleanMyMac X这一款mac电脑清理垃圾文件软件好用吗?

CleanMyMac X您的 Mac。极速如新。点按一下&#xff0c;即可优化调整整个 Mac畅享智能扫描 — 这款超级简单的工具用于优化您的 Mac。只需点按一下&#xff0c;即可运行所有任务&#xff0c;让您的 Mac 保持干净、快速并得到最佳防护。CleanMyMac 是一款功能强大的 Mac 清理程序…

网络基础——路由协议及ensp操作

目录 一、路由器及路由表 1.路由协议&#xff1a; 2.路由器转发原理&#xff1a; 3.路由表&#xff1a; 二、静态路由优缺点及特殊静态路由默认路由 1.静态路由的优缺点&#xff1a; 2.下一跳地址 3.默认路由 三、静态路由配置 四、补充备胎 平均负载 五、补充&…

计算机系统结构MIPS流水线

题目 其中&#xff1a;R3的初值是R2396。假设&#xff1a;在整个代码序列的运行过程中&#xff0c;所有的存储器访问都是命中的&#xff0c;并且在一个时钟周期中对同一个寄存器的读操作和写操作可以通过寄存器文件“定向”。问&#xff1a; &#xff08;1&#xff09;在没有任…

java写个爬虫抓取汽车之家车型配置参数

前几天有个搞工程的表弟找我&#xff0c;问我什么车好&#xff0c;可以经常跑工地的&#xff0c;看上去又有面子。于是我挥动发财的小手&#xff0c;写一个爬虫程序&#xff0c;筛选并整理了一些数据&#xff0c;并附上下载的图片提供参考&#xff0c;看中了果断第二天提车到手…

构造以太网交换网络

VLAN技术&#xff0c;这种技术可以把一个LAN划分成多个逻辑的VLAN,每个VLAN是一个广播域&#xff0c;VLAN内的主机间通信就和在一个LAN内一样&#xff0c;而VLAN间则不能直接互通&#xff0c;这样&#xff0c;广播报文就被限制在一个VLAN内。 二层 vlan 实验 1.路由器固定i…

Monkey工具之fastbot-iOS实践

背景 目前移动端App上线后 crash 率比较高&#xff0c; 尤其在iOS端。我们需要一款Monkey工具测试App的稳定性&#xff0c;更早的发现crash问题并修复。 去年移动开发者大会上有参加 fastbot 的分享&#xff0c;所以很自然的就想到Fastbot工具。 Fastbot-iOS安装配置 准备工…

编译Sqlite3记录

下载源文件&#xff1a; 下载地址&#xff1a;SQLite Download Page 打开QtCreator创建新的工程&#xff0c;选择纯C工程&#xff0c;将main.c删除&#xff0c;将下载的源码解压后的文件复制到并添加到工程中&#xff0c;其中的文件包括&#xff1a;sqlite3ext.h、sqlite3.h、…

阿里云SLS日志服务之数据导入与加工处理

一、背景 采集vm虚拟机上的Log日志文本&#xff0c;如果需要经过特殊的加工处理&#xff0c;在本文主要讲述如何在SLS把kafka采集上来的数据经导入并加工后存储。 二、数据流转图 三、数据导入 服务地址&#xff1a;填写kafka集群的地址数据格式&#xff1a;json字符串&#…

【一起学Rust | 框架篇 | Tauri2.0框架】Tauri App开启远程调试功能

文章目录 前言一、搭建PageSpy环境二、接入SDK三、进行远程调试调试控制台网络抓包审查元素 四、延伸 前言 Tauri在Rust圈内成名已久&#xff0c;凭借Rust的可靠性&#xff0c;使用系统原生的Webview构建更小的App 以及开发人员可以灵活的使用各种前端框架而一战成名。 然而&…

吴恩达《机器学习》12-2-12-3:大边界的直观理解、大边界分类背后的数学

一、大边界的直观理解 1. 大间距分类器的背景 支持向量机的大间距分类器着眼于构建一个能够在正负样本之间划定最大间距的决策边界。为了理解这一点&#xff0c;首先观察支持向量机的代价函数&#xff0c;其中涉及到正负样本的代价函数cos&#x1d461;1(&#x1d467;)和cos…

力扣二叉树--总结篇(2)

前言 总体回顾&#xff1a;11.18-12.14&#xff0c;中间有一个星期左右因为考试没有写题。37道题。 内容 这是第二阶段刷的题 从路径到构造二叉树&#xff0c;合并二叉树&#xff0c;再到二叉搜索树&#xff0c;公共祖先问题 看到二叉树&#xff0c;看到递归 都会想&#…

智慧工地源码(微服务+Java+Springcloud+Vue+MySQL)

智慧工地系统是依托物联网、互联网、AI、可视化建立的大数据管理平台&#xff0c;是一种全新的管理模式&#xff0c;能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。围绕施工现场管理的人、机、料、法、环五大维度&#xff0c;以及施工过程管理的进度、质量、安全三…

计算机毕业设计 基于SpringBoot的社区医院信息管理平台/系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

modelbox线程爆满宕机bug

序 该bug的解决需要特别感谢张同学。有了大佬的帮助&#xff0c;这个bug才得以解决。 问题现象 modelbox可以进行模型推理&#xff0c;但压测一段时间后&#xff0c;modelbox会宕机&#xff0c;并发生段错误。 “libgomp: Thread creation failed: Resource temporarily una…

kafka学习笔记--Topic 数据的存储机制

本文内容来自尚硅谷B站公开教学视频&#xff0c;仅做个人总结、学习、复习使用&#xff0c;任何对此文章的引用&#xff0c;应当说明源出处为尚硅谷&#xff0c;不得用于商业用途。 如有侵权、联系速删 视频教程链接&#xff1a;【尚硅谷】Kafka3.x教程&#xff08;从入门到调优…