上期的代码设计需求:
利用条件运算符的嵌套来完成此题:学习成绩>=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 的哦。