首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python代码找bug(5)

Python代码找bug(5)

上期的代码设计需求:

利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

代码如下:

请大家仔细阅读代码,找出其中的bug!

正确答案:共有3个bug。(对答案时间,看看答对了几个?)

(1)input()方法的返回值是字符串,需要强制类型转换才能参与计算。这个已经不是第一次遇到了,哈哈,就看有没有人不长记性。

(2)grade = A / B / C,这里A、B、C都是字符串,应该有引号引起来哦。不然,现在这个样子,意味着它们是什么?... 是未定义变量,是无法赋值给另一个变量的。

(3)还有一个神奇的错误:else if 看起来怎么那么眼熟呢?没错很多语言里都是这样写的的,这里...是不是手滑了,哈哈! Python是讲究极简的哦,只需要 elif即可。

所以,正确的代码应该是这样的:

嗯,这个看起来就比较“纯正”了!

点评:昨天的这个找bug问题,主要目的:

(1)让大家巩固对input()返回值的运用。

(2)注意字符串的规范使用。

(3)注意条件判断语句的规范使用。

对以上知识点存在模糊认识的同学,请翻阅和学习高渡号外前面发送的《Python入门》,或者高渡网站的《Python轻松入门》视频课程。

下面公布今天的问题。

本期代码设计需求:

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

需求分析:这是个常见的数学问题。看看用编程的方法如何解决?

代码如下:

大家注意到没有?这个代码很有意思!

循环语句肯定是要用到的,如果使用累计求和的办法是可以直接获得第N次落地时球经过了多少米的,累计折半(除以2)计算也可以直接得到最后反弹的高度的。

但是,但是为什么要定义两个列表呢?

我最近跟一个朋友聊 Python,就发现这样的一个有趣的特点,很多写Python代码的朋友都有这样一个习惯,大家很自然爱把一个重复序列的行为先记录在一个列表数据里,然后,你需要它里面的哪一项,随时方便拿给你。

而不是向我们惯常的做法,通过循环,代码在计算以后直接获取最后想要的结果,而忽略中间状态的数据。

我感觉这是两种不同的思维习惯。我猜测,是否跟Python的基因有关?!

好了,问题是这段漂亮的代码也还是有些瑕疵的,bug在哪呢?

找出来,发到留言里,明天对答案。

找不到bug的同学,建议先复习一下高渡号外前面发布的《Python入门》,以及高渡网站的《Python轻松入门》、《Python Web开发》等视频课程。

https://www.igaodu.cn(爱高渡,学编程,手把手教你!)

提醒,要特别注意格式语法的细节问题。

正确答案明天揭晓。

提醒:惯例所有代码都是基于Pythpn3 的哦。

下一篇
举报
领券