python积木搭建
第十三届蓝桥杯青少年组python比赛省赛真题
一、题目要求
(注:input()输入函数的括号中不允许添加任何信息)
1、编程实现
小蓝和小青在玩积木搭建游戏,具体玩法如下:
小蓝报一个数字N,代表高楼的高度,小青则需要使用最少的积木搭建出高度大于N的高楼。
给出小蓝所报出的数字N,及已有积木块每一块的高度,请你帮助小青找出最少需要多少块积木可以搭建出高度大于N的高楼。
例如::N=12,已有4个积木块的高度分别为4,7,8,4。
则最少需要2块积木,可以使搭建的高楼高度大于12,2块积木为7和8。
2、输入输出
输入描述:第一行输入一个正整数N,表示小蓝报出的数字
第二行输入多个正整数,表示已有积木块每一块的高度,正整数之间以一个英文逗号隔开。(要求所有正整数之和大于N)
输出描述:输出最少需要使用多少块积木,可以搭建出高度大于N的高楼
输入样例:
12
4,7,8,4
输出样例:
2
二、算法分析
- 题目看着有点复杂,但小朋友可以仔细分析一下
- 这题其实可以用列表实现起来比较方便
- 将每个积木的高度加入列表,然后进行排序
- 最后只要将搭建高度依次减去列表中的最大值就可以得到最少需要几块积木
三、程序编写
n = int(input())
ls = list(map(int,input().split(',')))
ls.sort()
for i in range(len(ls)-1,-1,-1):n -= ls[i]if(n <= 0):print(len(ls) - i)break
四、程序说明
- 利用input输入函数从键盘获取高楼的高度
- 利用int函数将n转换成整数类型
- 利用split函数以及map函数将输入的多个糖果罐里面对应的积木高度转换成整数对象,并结合list函数将多个对象转换成列表
- 利用sort函数对列表进行从低到高进行排序
- 接着利用for循环,从列表的最后一个元素开始循环遍历,每次遍历将n减去当前元素的值
- 如果n小于等于0,表示已经找到了满足条件的子列表,程序输出当前遍历的次数(即满足条件的子列表的长度),并且跳出循环
五、运行结果
12
4,7,8,42
六、考点分析
难度级别:中等,这题相对而言还是有一点小难度,难在产生列表和输出对应图形,具体主要考查如下:
- 学会分析题目,找到解题思路
- 学会简单的算法知识的应用
- input函数:Python 中 input() 函数接受一个标准输入数据,返回为 string 类型。
- int函数:强制将传入对象转换成整数类型
- split函数:按照指定的分隔符进行分割
- map函数:将指定的对象按照指定的函数进行迭代,在这里是将时分秒字符串类型数据按int整数类型数字返回输出(相当于多个变量强制类型转化)
- list函数:强制将参数转化成列表对象
- 学会列表的相关操作:列表声明、取数、遍历等等
- 学会for循环的使用:for循环可以遍历任何有序的项及列表元素等等。
- range函数:rang(a,b),循环的时候是不包括b的,所以我们这个案例中要转变一下,要想包含b,就应该写成range(a,b+1)
- 学会if...条件判断语句的使用:满足条件才执行相应的程序
- print函数:用于打印输出,最常见的一个函数。
- 充分掌握for循环和列表相关操作函数的使用
PS:方式方法有多种,小朋友们只要能够达到题目要求即可!
七、 推荐资料
- 所有考级比赛学习相关资料合集【推荐收藏】
1、蓝桥杯比赛
-
蓝桥杯python选拔赛真题详解
-
蓝桥杯python省赛真题详解
-
蓝桥杯python国赛真题详解
-
历届蓝桥杯科技素养计算思维真题解析
2、考级资料
-
python等级一级真题解析【电子学会】
-
python等级二级真题解析【电子学会】
-
python等级三级真题解析【电子学会】
-
python等级四级真题解析【电子学会】
3、其它资料
-
初学python100例
- 历届蓝桥杯scratch国赛真题解析
- 历届蓝桥杯scratch省赛真题解析
- 历届蓝桥杯scratch STEMA选拔赛真题解析
- 历届蓝桥杯科技素养计算思维真题解析
- 画图-scratch编程考级99图
- 电子学会历年scratch等级考试一级真题解析
- 电子学会历年scratch等级考试二级真题解析
- 电子学会历年scratch等级考试三级真题解析
- 电子学会历年scratch等级考试四级真题解析
- 零基础学习scratch3.0【入门教学 免费】
- 零基础学习scratch3.0【视频教程 114节 免费】