摘苹果-第13届蓝桥杯省赛Python真题精选

news2024/11/16 12:04:41

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

摘苹果,本题是2022年4月23日举办的第13届蓝桥杯青少组Python编程省赛真题编程部分第3题,13届一共举办了两次省赛,这是第二次省赛。题目要求对于给定小青伸手高度N及每个苹果离地高度,请你编程帮助小青计算出最多能摘到多少个苹果。

先来看看题目的要求吧。

一.题目说明

时间限制:3000MS

内存限制:589824K8

编程实现:

小青带着一根长为80厘米的竹竿去摘苹果,当伸手碰不到的苹果会借助竹竿摘苹果(竹竿碰到苹果就算摘下)。在给出小青伸手的高度N及每个苹果离地面的高度,请你帮助小青计算出最多能摘到多少个苹果。

例如:N = 120,苹果高度分别为130,220,153,200,最多可摘到3个苹果,高度为220的苹果即使用竹竿也摘不到。

输入描述:

第一行输入一个正整数N(120 ≤ N ≤ 200),表示小青伸手高度(单位:厘米)

第二行输入多个正整数,表示每个苹果距离地面的高度,正整数之间以一个英文逗号隔开(单位:厘米)

输出描述:

输出一个整数,表示小青最多可以摘到的苹果数

样例输入:

120

130,220,153,200

样例输出:

3

评分标准:

  • 10分:能正确输出一组数据;

  • 10分:能正确输出两组数据;

  • 15分:能正确输出三组数据;

  • 15分:能正确输出四组数据。

二.思路分析

这是一道简单的计算题,涉及的知识点包括循环、条件、列表和枚举算法等。

题目的意思还是比较好理解的,我这里给出两种解决方案:

  • 枚举算法

  • 列表推导式

1. 枚举算法

最简单的思路就是使用枚举算法,逐个判断每个苹果是否能摘到,并统计其数量。

这里的关键是判断条件,竹竿的长度是固定的80,小青伸手的高度是n,二者相加是n + 80,于是条件就出来了:

n + 80 >= 苹果高度

2. 列表推导式

当然,我们可以直接使用带条件的列表推导式来简化代码,在Python中,列表推导式是可以携带条件的,格式如下:

[expression for item in iterable if condition]

举个简单的例子,假设有一个列表 nums = [1, 2, 3, 4, 5],想要生成一个新列表,该列表只包含大于2的数字的平方。

我们可以使用带条件的列表推导式来实现:

nums = [1, 2, 3, 4, 5]res = [n ** 2 for n in nums if n > 2]print(res)  # 输出 [9, 16, 25]

在这个例子中,我们筛选出了大于2的数字,然后对这些数字取平方,最后得到一个新的列表res。

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

三.编程实现

根据上面的思路分析,我们分别使用两种方法来编写程序:

  • 枚举算法

  • 列表推导式

1. 枚举算法

根据前面的思路分析,我们编写代码如下:

图片

代码不多,强调两点:

1). 在获取苹果高度的时候,使用了map()函数,它接受两个参数,第一个参数是函数,第二个参数是可迭代对象(如列表、元组、字符串等),结果返回新的迭代器对象,只不过每个元素都被函数处理过,然后再使用list()函数转成列表;

2). 在遍历apples列表时,直接获取列表中的元素,没有使用下标,这样代码更简单。

2. 列表推导式

使用列表推导式,对代码进行简化,如下:

图片

1). 获取高度列表的时候,使用了列表推导式;

2). 使用带条件的列表推导式,对apples列表进行过滤,将可以摘到的苹果保存到res列表中,res列表的长度就是可以摘到的苹果数量。

至此,整个程序就全部完成了,你可以输入不同的数据来测试效果啦。

四.总结与思考

本题代码在4 ~ 7行左右,涉及到的知识点包括:

  • 循环语句;

  • 条件语句;

  • 遍历列表;

  • 列表推导式;

本题分值为50分,代码不多,难度一般。关键点在于理解题目的意思,找出判断条件,然后使用枚举算法逐一处理。

枚举算法非常简单,它是所有算法的基础,大部分编程问题,都可以用枚举算法来解决。

但是,我们不能仅仅满足于枚举算法,枚举虽好,但效率不高。我们得想办法提高程序的效率, 于是就出现了各种不同的算法,比如分治、二分、回溯和动态规划等。

大家可能不知道的是,在Python编程中,列表推导式比传统的循环方法更为高效。这是因为列表推导式在底层进行了优化,可以更快速地执行操作。

除此之外,列表推导式还有如下几个特点:

1. 简洁性:

列表推导式简化了对列表元素的处理过程。通过一行简洁的代码,可以快速创建新的列表,并对元素进行转换、筛选或组合操作。

2. 可读性:

使用列表推导式可以使代码更具可读性。它们精炼地表达了对列表元素的处理逻辑,使代码更加清晰和易于理解。

3. 灵活性:

列表推导式可以包含条件表达式,从而允许根据特定条件筛选元素,使得代码更为灵活。

4. 功能丰富:

除了简单的列表生成外,列表推导式还支持嵌套、多重循环等复杂操作,使得其在处理各种数据结构时非常有用。

总之,列表推导式是一种强大而优雅的工具,可以帮助简化代码、提高可读性,并提高代码执行效率。它是一种非常实用的编程技巧,我们必须要熟练掌握。

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

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

需要源码的,可以添加本人微信。

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

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

相关文章

品牌出海!独立站不仅是方向,而是成为跨境电商主流了

近些年,随着跨境电商3.0品牌出海和本土化时代的到来,独立站成为品牌出海的必备渠道和关键胜负手! 搭建独立站作为品牌本土化的最好展示载体,独立的品牌包装与产品页面,能够更好讲述品牌故事,因而得以快速发…

fvcore库的一些功能和使用

目录 一、安装fvcore库 二、使用 fvcore是Facebook开源的一个轻量级的核心库,它提供了各种计算机视觉框架中常见且基本的功能。其中就包括了统计模型的参数以及FLOPs等。 项目地址:fvcore 一、安装fvcore库 pip install fvcore 二、使用 1、计算模…

Debian12中搭建TiddlyWiki服务并进行配置

一、Node.js 环境安装 apt update & apt install nodejs npm ## 查看版本 node -v npm -v二、安装Tiddlywiki npm install -g tiddlywiki## 查看版本号 tiddlywiki --version 三、配置并运行 tiddlywiki ## 在/home 目录自动创建Testwiki文件夹,作为wiki的存…

项目实践---Windows11中安装Zookeeper/Hadoop/Hive的部分问题解决

一.Hadoop与Hive兼容版本选择 正常来说,Hadoop与Hive版本不兼容会出现很多问题导致hive安装失败,可以先确定HIve的版本,比如:要用Hive3.1.2版本,该如何确定使用Hadoop的版本呢,需要我们在hive源码中找到对…

自学鸿蒙HarmonyOS的ArkTS语言<四>@Builder自定义构建函数

作用:可以提取重复的ui, 在buil()中调用 【官方文档传送门】 一、用在自定义组件内 自定义组件内可以有一个或多个Builder只能在所属组件的builder方法和其他Builder中调用,组件外不能调Builder中的this指当前所属组件,组件的状态变量可以在…

LeetCode 热题100 --双指针

双指针 b站UP主蜜糖:由于数据特征的有序性(大小或者正负),所以可以证明当前节点一定是优于过往节点,从而可以通过数据的维度数量的指针,逐步的迭代收敛最终找到最优解。 283.移动零 相关标签 :…

计算机网络 —— 应用层(电子邮件)

计算机网络 —— 应用层(电子邮件) 电子邮件发送电子邮件的过程SMTP特性工作流程 电子邮件格式MIME关键组件工作方式 POP/IMAPPOP(邮局协议)IMAP(因特网邮件访问协议) 基于万维网的电子邮箱特点优势常见的基…

营销复盘秘籍,6步法让你的活动效果翻倍

在营销的世界中,每一次活动都是一次探险,而复盘就是探险后的宝藏图,指引我们发现问题、提炼经验、优化策略。 想要学习如何复盘,只要了解以下复盘六大步骤,即可不断总结,逐渐走向卓越。 第一步&#xff1…

lvgl v8.3 windows仿真

1,下载安装codeblocks20.03 https://zenlayer.dl.sourceforge.net/project/codeblocks/Binaries/20.03/Windows/codeblocks-20.03mingw-setup.exe?viasf1 2,下载代码 git clone --recurse-submodules https://github.com/lvgl/lv_port_win_codeblock…

fairseq (Facebook AI Research) 包

0. Abstract 最近在看一个用 RNNs 网络做 Translation 任务的程序, 关于数据处理部分, 主要用到工具包 sentencepiece 和 fairseq, 前者主要是对文本进行分词处理, 后者则是对已分词的文本进行二进制化和快速加载. 包越方便使用, 就说明包装得越狠, 也就越令人一头雾水, 本文简…

虚拟机拖拽文档造成缓存过大

查看文件夹大小:du -h --max-depth1 缓存位置:~/.cache/vmware/drag_and_drop 删除:rm -fr ~/.cache/vmware/drag_and_drop 释放了3GB

Javascript中的this关键字指向

this关键字介绍 不同情况下的this 1.对象调用方法中的this 2.在全局使用this(单独使用) 3.函数中的this 4.函数严格模式下 5.事件中的this 6.构造函数中的this 7.箭头函数没有this call()、apply()、bind() 的用法 this关键字介绍 面向对象语言中 this 表示当前对象…

JavaScript中的内置对象

// 用法2:参数:指定的时间的字符串 创建一个指定的时间 // new Date(‘2018-12-12 12:00:00’) var date1 new Date(‘2018-12-12 12:00:00’); console.log(date1); // 用法3: 参数可以是年月日时分秒 月份从0开始 // var date2 new …

基于Java实验室课程管理系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,…

Linux 阻塞和非阻塞 IO 实验学习

Linux 阻塞和非阻塞 IO 实验学习 IO 指的是 Input/Output,也就是输入/输出,是应用程序对驱动设备的输入/输出操作。当应用程序对设备驱动进行操作的时候,如果不能获取到设备资源,那么阻塞式 IO 就会将应用程序对应的线程挂起&…

【初阶数据结构】二叉树(附题)

目录 1.树概念及结构 1.1树的概念 1.2 树的相关概念(树结构的相关概念命名参考自然树和人的血缘关系) 1.3 树的表示 1.4 树在实际中的运用(表示文件系统的目录树结构,初次之外网盘中使用到) 2.二叉树概念及结构 …

Google浏览器快捷方式固定到任务栏启动被其他网页劫持

场景复现 1、Google浏览器设置启动时继续浏览上次打开的网页 2、先浏览CSDN网站,然后关闭Google浏览器 3、再次打开Google浏览器时,除了显示我们上次浏览的CSDN网页外,还默认打开了百度网页 解决办法 1、在Google浏览器中新建标签页&am…

Redis缓存雪崩(主从复制、哨兵模式(脑裂)、分片集群)

缓存雪崩: 在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。 方法一: 给不同key的TTL添加随机值,以此避免同一时间大量key失效。(用于解决同一时间大量key过期&…

linux笔记10--编辑器之神VIM

文章目录 1. 简单介绍① 为什么叫vim② linux常见的编辑器③ 注意事项④ 其它 2. 操作模式的划分① 两种 -- 国际上普通模式(命令操作模式)插入模式 ② 三种 -- 国内普通模式如何进入与退出界面 插入模式如何进入与退出界面 命令模式如何进入与退出界面常见的命令模式 ③ 区别④…

RFID技术在人工晶体清洗台上的应用案例分析

RFID技术在人工晶体清洗台上的应用案例分析 应用背景 在医疗领域中人工晶体清洗台发挥着极为重要的作用,随着市场需求的持续增长、技术的不断创新、定制化趋势的加强以及环保要求的提高,人工晶体清洗台不免暴露出一下应用痛点需要解决。 痛点&#xff…