[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第23讲。
小球自由下落,本题是2020年5月31日举办的第11届蓝桥杯青少组Python编程选拔赛真题,题目要求编程计算一个小球从n米高度自由下落,第10次反弹的高度以及一共经过的距离。
先来看看题目的要求吧。
编程实现:
一个小球从n米高度自由落下,每次落地后反跳回原高度的一半,再落下。求第10次反弹多高,及初始落下到第10次反弹到最高点时(不含第十次落下距离)一共经过了多少米?
输入样例:
1024
输出样例:
1.0
3069.0
评判标准:
5分:能正确判断一组数据;
9分:能正确判断两组数据;
11分:能正确判断三组及三组以上数据。
这是一道简单的计算题,考查的知识点包括循环和算术运算。
根据题目的描述,每次落地之后,反弹回来的高度是原高度的一半,我们以n=1024为例,使用表格来描述这个过程:
看到这个表格,是不是有点豁然开朗的感觉,我们将小球单次的运动,分成如下两个过程:
下落
反弹
每一次,反弹的高度是下落高度的一半,而这个高度又作为下一次下落的高度。在统计总运动距离的时候,将每次下落和反弹的高度都累加起来就可以了,然后将单次程重复10次即可。
思路有了,接下来,我们就进入具体的编程实现环节。
根据上面的思路分析,我们直接编写程序如下:
代码非常简单,强调一点,在循环过程中,有3行代码,注意其顺序,先将下落的距离累加起来,再计算反弹距离,也是下一次下落的高度,同时再将反弹的高度累加起来。
运行程序,输入1024,效果如下:
输入2048,效果如下:
注意结果是浮点数,因为在Python编程中,除法/得到的结果就是小数,即使是能够整除,结果也是小数。
至此,整个程序就全部完成了,你也可以输入不同的数字来测试效果。
本题的分数为25分,代码在8行左右,涉及到的知识点包括:
输入和输出语句;
循环语句,主要for...in循环;
算术运算,包括加法和除法;
变量的使用;
题目难度一般,关键是要将小球下落和反弹的过程分析清楚,其高度是怎么变化的,遵循什么样的规律。
在分析问题时,建议多使用画图或者表格的方式,它是将抽象问题具体化的一个过程,非常便于我们理解问题。
你还有什么好的想法和创意吗,也非常欢迎和超平老师分享探讨。
如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香