绘制彩色正多边形-第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.rhkb.cn/news/204903.html

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

相关文章

中兴小鲜50 ZTE 畅行50 刷机救砖演示机7543n root 虎贲 展锐 T760 解锁BL

系统信息 网络制式 支持中国移动、中国电信、中国联通、中国广电四大运营商5G频段;支持4G/3G/2G 系统平台 MyOS 13.0(基于Android 13) 硬件信息 处理器 展锐T760,高性能8核5G芯片 存储 6GB RAM128GB ROM 扩展 不支持 电池容…

项目:基于UDP的网络聊天室

项目需求: 1.如果有用户登录,其他用户可以收到这个人的登录信息 2.如果有人发送信息,其他用户可以收到这个人的群聊信息 3.如果有人下线,其他用户可以收到这个人的下线信息 4.服务器可以发送系统信息 服务器代码: #i…

【网络奇缘】- 计算机网络|性能指标|体系结构

🌈个人主页: Aileen_0v0🔥系列专栏: 一见倾心,再见倾城 --- 计算机网络~💫个人格言:"没有罗马,那就自己创造罗马~" 目录 温故而知新 计算机网络性能指标 时延 时延带宽积 往返时延RTT 访问百度​编辑 访问b站 访问谷歌 …

【java扫盲贴】final修饰变量

引用类型:地址不可变 //Java中的引用类型分为类(class)、接口(interface)、数组(array)和枚举(enum)。//string是特殊的引用类型,他的底层是被final修饰的字…

gitee推荐-PHP面试准备的资料

该内容为giee项目。PHP-Interview: 这个项目是自己准备PHP面试整理的资料。包括PHP、MySQL、Linux、计算机网络等资料。方便自己以后查阅,会不定期更新,欢迎提交pr,如果错误,请指出,谢谢 在线预览地址:Intr…

Python自动化测试工具selenium使用指南

概述 selenium是网页应用中最流行的自动化测试工具,可以用来做自动化测试或者浏览器爬虫等。官网地址为:selenium。相对于另外一款web自动化测试工具QTP来说有如下优点: 免费开源轻量级,不同语言只需要一个体积很小的依赖包支持…

第八节HarmonyOS @Component自定义组件的生命周期

在开始之前,我们先明确自定义组件和页面的关系: 1、自定义组件:Component装饰的UI单元,可以组合多个系统组件实现UI的复用。 2、页面:即应用的UI页面。可以由一个或者多个自定义组件组成,Entry装饰的自定…

GPT还远远不是真正的智能

GPT是一个基于深度学习的自然语言处理模型,它可以生成逼真的文本。虽然GPT在生成文本方面取得了显著的进展,但它并不具备真正的智能。GPT是通过训练模型来学习语言模式,它不具备理解、推理、判断和主动学习的能力。它只是根据已有的语料库生成…

UI上传组件异步上传更改为同步

实现异步方法 JavaScript 异步 实现异步的五种实现方法_js异步-CSDN博客 这两种比较经常用。 因为上传组件是异步上传的通过Async和await配合使用可以上传完照片视频后返回的地址在继续走下去,而不是图片视频地址还未获取时就上传后端了。

神器!使用 patchworklib 库进行多图排版真棒啊

如果想把多个图合并放在一个图里,如图,该如何实现 好在R语言 和 Python 都有对应的解决方案, 分别是patchwork包和patchworklib库。 推介1 我们打造了《100个超强算法模型》,特点:从0到1轻松学习,原理、…

Linux 启动过程

linux启动步骤&#xff1a; <1>加电 <2>加载bios设置 <3>加载grup <4>加载内核系统到内存中 <5>加载配置文件 <6>加载内核模块 <7>完成相应的初始化工作和启动相应的服务 <8>启动系统进程 <9>出现登录界面 &l…

探索亚马逊云科技云存储服务的性能

文章作者&#xff1a;Libai 引言 随着企业越来越多地依赖云存储解决方案&#xff0c;确保存储性能的最佳状态变得至关重要。在本文中&#xff0c;我们将探讨在亚马逊云科技云存储服务上进行存储性能基准测试的重要性&#xff0c;以及如何帮助企业做出资源分配和优化的明智决策…

HarmonyOS(五)—— 认识页面和自定义组件生命周期

前言 在前面我们通过如何创建自定义组件一文知道了如何如何自定义组件以及自定义组件的相关注意事项&#xff0c;接下来我们认识一下页面和自定义组件生命周期。 自定义组件和页面的关系 在开始之前&#xff0c;我们先明确自定义组件和页面的关系 自定义组件&#xff1a;Co…

【网络安全】-安全常见术语介绍

文章目录 介绍1. 防火墙&#xff08;Firewall&#xff09;定义通俗解释 2. 恶意软件&#xff08;Malware&#xff09;定义通俗解释 3. 加密&#xff08;Encryption&#xff09;定义通俗解释 4. 多因素认证&#xff08;Multi-Factor Authentication&#xff0c;MFA&#xff09;定…

Git控制指令

git status查看当前本地分支的修改状态 git diff 文件路径 查看具体文件的修改内容 git log打印用户信息 git remote -v查看远程地址 git checkout -- *还原被删除的文件 git rm -r --force .删除本地所有文件 git commit -m "Remove all files from repositor…

OpenCV | 傅里叶变换——低通滤波器与高通滤波器

import cv2 #opencv 读取的格式是BGR import numpy as np import matplotlib.pyplot as plt #Matplotlib是RGB %matplotlib inline def cv_show(img,name):cv2.imshow(name,img)cv2.waitKey()cv2.destroyAllWindows() 傅里叶变换 傅里叶变换的作用 高频&#xff1a;变化剧烈…

leetcode:2133. 检查是否每一行每一列都包含全部整数(python3解法)

难度&#xff1a;简单 对一个大小为 n x n 的矩阵而言&#xff0c;如果其每一行和每一列都包含从 1 到 n 的 全部 整数&#xff08;含 1 和 n&#xff09;&#xff0c;则认为该矩阵是一个 有效 矩阵。 给你一个大小为 n x n 的整数矩阵 matrix &#xff0c;请你判断矩阵是否为一…

一篇总结 Linux 系统启动的几个汇编指令

学习 Linux 系统启动流程&#xff0c;必须熟悉几个汇编指令&#xff0c;总结给大家。 这里不是最全的&#xff0c;只列出一些最常用的汇编指令。 一&#xff0e;数据处理指令 1.数据传送指令 【MOV指令】 把一个寄存器的值(立即数)赋给另一个寄存器&#xff0c;或者将一个…

Linux下配置邮箱客户端MUTT,整合msmtp + procmail + fetchmail

一、背景 在向 Linux kernel 社区提交patch补丁步骤总结&#xff08;已验证成功&#xff09;_kernel补丁-CSDN博客文章中提到如何向kernel社区以及其他类似如qemu、libvirt社区提交patch的详细步骤&#xff0c;但还有一点不足的是通过git send-email这种方法基本是只能发送patc…

C# Socket通信从入门到精通(12)——多个同步UDP客户端C#代码实现

前言: 我们在开发Udp客户端程序的时候,有时候在同一个软件上我们要连接多个服务器,这时候我们开发的一个客户端就不够使用了,这时候就需要我们开发出来的软件要支持连接多个服务器,最好是数量没有限制,这样我们就能应对任意数量的服务器连接,由于我们开发的Udp客户端程…