Python代码找bug(6)
上期的代码设计需求:
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
代码如下:
请大家仔细阅读代码,找出其中的bug!
正确答案:共有2个bug。(对答案时间,看看答对了几个?)
(1)还是range()方法的参数问题,它决定for循环的次数。这里的起始数为1,那么如果t=10,而弹跳次数是10,for循环的次数是不是也应该是10次?所以,range的第二个参数应该是多少?11对吧?所以,此处,t应是t+1。哈哈,还是在检查有些同学的记性?!
(2)h/=2,这个位置是不是有点奇怪?虽说Python是严格缩进格式的,但是,此处缩进真的对吗?如果此处没错,那么意味着什么?是不是意味着第一次弹跳的高度是不变的?哈哈,次球非同一般啦,莫非是AI球?如果不是,那么,它的缩进还是向前移动一级吧,这样才能保证每次弹跳(语句循环)一次高度降低一半吧。
所以,正确的代码应该是这样的:
嗯,这个看起来就比较“纯正”了!
点评:昨天的这个找bug问题,主要目的:
(1)再一次巩固对range()参数的认知。
(2)正确理解和运用缩进语法
对了,昨天我们还提到一个有趣的问题就是关于python的代码基因,似乎偏好使用list列表等序列类型数据结构的问题。这里我们把另外一种比较传统(其他语言)爱用的解决方案的代码列出来,供大家欣赏,品味两者风格的差异,看看基因的影响力是不是很强大?
对以上代码阅读如有困难的同学,请翻阅和学习高渡号外前面发送的《Python入门》,或者高渡网站的《Python轻松入门》视频课程。
下面公布今天的问题。
本期代码设计需求:
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
需求分析:解决这类问题,其实有一个明显的入口,就是结果是已知的:最后(第10天)只剩下1个桃子。所以,我们会采取逆向思维的方法,从后往前推断。
代码如下:
兄弟,明察秋毫的你,看看bug在哪呢?
找出来,发到留言里,明天对答案。
找不到bug的同学,建议先复习一下高渡号外前面发布的《Python入门》,以及高渡网站的《Python轻松入门》、《Python Web开发》等视频课程。
https://www.igaodu.cn(爱高渡,学编程,手把手教你!)
提醒,要特别注意格式语法的细节问题。
正确答案明天揭晓。
提醒:惯例所有代码都是基于Pythpn3 的哦。