绘制彩色正多边形-第11届蓝桥杯选拔赛Python真题精选

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

绘制彩色正多边形,本题是2019年~2020年举办的第11届蓝桥杯青少组Python编程选拔赛真题(具体日期不详),题目要求根据所给图片识别出图形中的基本形状,以基本形状为单位绘制出最终图形。

先来看看题目的要求吧。

一.题目说明

编程实现:

使用 turtle 绘制下图。

图片

提示:识别出图形中的基本形状,以基本形状为单位绘制出最终图形。

绘制图形要求:

1). 背景为白色,正六边形和三角形的填充颜色分别为红色、绿色;

2). 图形中间为边长为 150 的正六边形,周围为六个等边三角形;

3). 正六边形的上下两条边要求与×轴方向平行;

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

评分标准:

  • 10分:正确绘制出一个正六边形,且能看到绘制过程;

  • 30分:在满足10分的基础上,绘制出图中的六个等边三角形,且能看到绘制过程;

  • 50分:在满足30分的基础上:正确填充颜色,且能看到绘制过程,图形方向正确、画笔隐藏。

二.思路分析

这是一道海龟画图题,考察的知识点主要包括turtle的使用、循环编程,同时还会涉及到一些数学和几何知识。

我们可以将图形拆分成两部分:

  • 6个等边三角形

  • 1个正六边形

等边三角形就是正三边形,关于正多边形的绘制,是学习海龟画图时最常见的一种题目。

图片

对于正n边形来说,有n条边,所以需要重复n次移动操作,这里的关键是转角,每次转向多少度呢?

超平老师总结了一个万能公式,超级好用,如图所示:

图片

如果是正三角形,其边数为3,每次转角为360 / 3 = 120度,如果是正方形,其边数为4,每次转角为360 / 4 = 90度,如果是正六边形,其边数为6,每次转角为60度,以此类推。

为了简化代码,我们可以将绘制正多边形定义成函数,然后在需要的地方调用。

如果只是单纯的绘制正多边形,就非常简单了,这里的难点是要分别在红色正六边形的6个顶点位置绘制一个绿色填充正三角形。

遇到复杂问题,超平老师的法宝就是使用计算思维中的拆分思想,将复杂问题拆分成几个简单的小问题。

我们可以先画一个正三角形,画完之后,海龟又回到初始位置了,让海龟沿着当前方向前进150度,再旋转60度,再绘制第2个三角形,重复这个过程6次,就可以绘制好外围的6个绿色三角形了。

当画完6个三角形之后,你发现了一件神奇的事情,就是海龟又恢复了初始状态,包括位置和方向,然后直接绘制红色填充正六边形即可。

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

三.编程实现

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

  • 定义函数绘制正多边形

  • 绘制6个绿色填充正三角形

  • 绘制红色填充正六边形

1. 定义函数绘制正多边形

根据前面的思路分析,运用万能公式,定义函数如下:

图片

简单说明两点:

1). 参数color设置的是边框颜色和填充色;

2). 参数dir表示左转和右转,在绘制三角形的时候使用左转,绘制正六边形的时候使用的是右转;

2. 绘制6个绿色填充正三角形

直接调用上面的polygon()函数,循环6次,绘制好6个正三角形,如图:

图片

代码比较简单,注意按照顺序设置好相应的参数。运行程序,效果如下:

图片

3. 绘制红色填充正六边形

这个就更简单了,就一行代码,如下:

图片

运行程序,效果如下:

图片

基本效果有了,但是总感觉哪里不对劲。相信你已经发现了,图形并没有放在画板的正中心,虽然题目没有明确要求,但是我们应该有这个意识,将图形画在正中心。

为方便理解,超平老师绘制了两个正六边形,如图:

图片

其中,坐标(0,0)是默认初始位置,很明显,我们要将小海龟沿着120度方向,移动150步,到达新的起点位置。

很多同学对turtle的方向不太熟悉,需要说明一下,如图所示:

图片

搞清楚了这些,就可以在绘制图形之前,添加如下代码:

图片

代码比较简单,说明两点:

1). 在移动过程中,为避免出现多余的线段,需要先抬笔,到达目标位置后再落笔;

2). 沿着120度前进150后,需要将方向重新设置为0,也就是初始方向:

再次运行程序,效果如下:

图片

这个效果就完美多了,至此,整个程序就全部完成了。

四.总结与思考

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

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

  • Turtle的灵活运用;

  • 正多边形的几何知识;

  • 函数的使用;

题目难度一般,需要考生熟练掌握turtle画图的基础知识。其次是数学思维,这里用到了正多边形的几何特性,尤其超平老师总结的万能公式,可以帮助你快速搞定各种正多边形的绘制。

关于万能公式模型,很多同学觉得很简单,实际上,在本题绘制6个绿色填充三角形的过程中,我们使用了两次万能公式,第一次是绘制三角形时,3 * 120= 360,第二次是绘制6个三角形的时候,6 * 60 = 360。

我们再来看一道11届选拔赛的真题,要求绘制如下正多边形:

图片

要求如下:

1)背景为白色,图形的填充颜色分别为红色、黄色;

2)图形中间为边长为50的正十二边形,周围为等边三角形;

3)正十二边形的上下两条边要求与X轴方向平行;

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

感觉是不是特别类似,这就当作是留给你的练习题吧。

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

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

需要源码的,可以私信作者。

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

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

相关文章

论文解读--Visual Lane Tracking and Prediction for Autonomous Vehicles

自动驾驶汽车视觉车道线跟踪和预测 摘要 我们提出了一种用于自动驾驶汽车跟踪水平道路车道标记位置的可视化方法。我们的方法是基于预测滤波的。预测步骤估计在每个新的图像帧中期望的车道标记位置。它也是基于汽车的运动学模型和嵌入式测程传感器产生的信息。使用适当准备的测…

弱网模拟工具

一、背景 一个人晚上在家通过 Wi-Fi 上网,在线电影播放基本流畅,可一旦在晚间用网高峰期打视频电话就画面糊,这时不仅可能带宽受限了,还可能有较高的丢包率。与有线网络通信相比,无线网络通信受环境影响会更大&#x…

【Java Web学习笔记】 1 - HTML入门

项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/html 零、网页的组成 HTML是网页内容的载体。内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字、图片视频等。 CSS样式是表现。就像网页的外衣。比如,标题字体、…

类,封装,包

类,封装,包 一级目录1:下面代码的运行结果是()2:以下哪项说法是正确的?3:以下代码在编译和运行过程中会出现什么情况4:在JAVA中,假设A有构造方法A(int a)&…

树基本概念+前中后序遍历二叉树

🌈一、树的基本概念 ☀️1.树的定义:树是一种非线性结构,看起来像一棵倒挂的树,根朝上,而叶朝下。 ☀️2.相关术语 1.根节点:图中的A,无前驱结点 2.叶节点(终端节点)&a…

代码随想录 738. 单调递增的数字

题目 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 示例 1: 输入: n 10 输出: 9 示例 2: 输入: n 1234 输出: 1234 示例 3: 输…

第九节HarmonyOS 常用基础组件4-Button

一、Button Button组件主要用来响应点击操作&#xff0c;可以包含子组件。 示例代码&#xff1a; Entry Component struct Index {build() {Row() {Column() {Button(确定, { type: ButtonType.Capsule, stateEffect: true }).width(90%).height(40).fontSize(16).fontWeigh…

Python多线程使用(二)

使用多个线程的时候容易遇到一个场景&#xff1a;多个线程处理一份数据 使用多线程的时候同时处理一份数据&#xff0c;在threading中提供了一个方法&#xff1a;线程锁 Demo&#xff1a;下订单 现在有多笔订单下单&#xff0c;库存减少 from threading import Thread from t…

Java类的初始化顺序

类初始化顺序遵循以下三个原则&#xff08;优先级依次递减&#xff09; 1、静态对象&#xff08;变量&#xff09;优先于非静态对象&#xff08;变量&#xff09;初始化&#xff0c;其中静态对象&#xff08;变量&#xff09;只初始化一次&#xff0c;而非静态对象&…

【海思SS528 | VO】MPP媒体处理软件V5.0 | 视频输出模块——学习笔记

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

谈谈MYSQL索引

基本介绍 索引是帮助MySQL高效获取数据的数据结构&#xff0c;主要是用来提高数据检索的效率&#xff0c;降低数据库的IO成本&#xff0c;同时通过索引列对数据进行排序&#xff0c;降低数据排序的成本&#xff0c;也能降低了CPU的消耗。 通俗来说, 索引就相当于一本书的目录,…

WebGL笔记:图形缩放的原理和实现

缩放 1 &#xff09;原理 缩放可以理解为对向量长度的改变&#xff0c;或者对向量坐标分量的同步缩放 如下图&#xff0c;比如让向量OA 收缩到点B的位置&#xff0c;也就是从OA变成OB&#xff0c;缩放了一半 2 &#xff09;公式 已知 点A的位置是(ax,ay,az)点A基于原点內缩了…

CTF特训日记day2

day2打了一个叫NBCTF的比赛 做了四个题&#xff0c;剩下五道arm的题不会做了&#xff0c;关注一下wp&#xff0c;也许可以靠这个比赛提升一波异架构能力。 heapnotes 2.31简单堆题&#xff0c;没啥好说的&#xff0c;直接改got就行了 from re import L from pwn import * f…

Redis 入门、基础。(五种基本类型使用场景)

文章目录 1. 概况1.1 认识 NoSQL1.1.1 查询方式1.1.2 事务1.1.3 总结 2. 认识 Redis4. Redis 常见命令4.1 Redis 数据结构介绍4.2 Redis 通用命令4.3 Redis 命令之 String 命令4.4 Redis 命令的层级结构4.5 Redis 命令之 Hash 命令4.6 Redis 命令之 List 命令4.7 set 唯一不排序…

SparkSQL远程调试(IDEA)

启动Intellij IDEA&#xff0c;打开spark源码项目&#xff0c;配置远程调试 Run->Edit Configuration 启动远程spark-sql spark-sql --verbose --driver-java-options "-Xdebug -Xrunjdwp:transportdt_socket,servery,suspendy,address5005"参数说明&#xff1a;…

css实现简单的抽奖动画效果和旋转效果,还有春联效果

使用css的animation和transform和transition可以实现简单的图片放大缩小&#xff0c;旋转&#xff0c;位移的效果&#xff0c;由此可以延伸的动画效果还是挺多的&#xff0c;比如图片慢慢放大&#xff0c;图片慢慢旋转并放大&#xff0c;图片慢慢变化位置等等&#xff0c; 抽奖…

重新认识Word——样式

重新认识Word Word样式给所有一级标题加上一级标题样式修改标题一样式&#xff0c;符合要求 正文样式标题前的小黑点导航窗格样式的相互复制Word一键转PPT 话说回来&#xff0c;一个程序员平时可能还看不起office全家桶的软件&#xff0c;但是&#xff0c;在实际的生活运用中&a…

苍穹外卖面试题-下

17. 项目参与人员角色 项目经理&#xff08;1人&#xff09;&#xff1a;对整个项目负责&#xff0c;任务分配、把控进度 产品经理&#xff08;1人&#xff09;&#xff1a;进行需求调研&#xff0c;输出需求调研文档、产品原型等 UI设计师&#xff08;1人&#xff09;&#…

电商产品经理常用的ChatGPT通用提示词模板

电商产品规划和策略&#xff1a;请帮助我规划和制定电商产品的策略和计划&#xff0c;包括市场调研、用户需求分析、产品定位、竞争对手分析等方面的内容&#xff0c;以便我能够更好地把握市场机会并制定相应的发展策略。 电商产品设计和开发&#xff1a;请帮助我进行电商产品…

Canvas和SVG有什么区别?a元素除了用于导航外,还有什么作用?如何在页面上实现一个圆形的可点击区域?

Canvas和SVG有什么区别? svg 绘制出来的每一个图形的元素都是独立的 DOM 节点&#xff0c; 能够方便的绑定事件或用来修改。 canvas输出的是一整幅画布。 svg 输出的图形是矢量图形&#xff0c;后期可以修改参数来自由放大缩小&#xff0c;不会失真和锯齿 。而canvas 输出标量…