上期的代码设计需求:
有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
请大家仔细阅读代码,找出其中的bug!
答案:共有5个bug。(赶紧对下自己的答案,是不是全对了呢?)
(1)三个for循环迭代的range的参数应该是(1,5),这样才能循环1-4次嘛;
(2)if( i != k && i != j && j != k)的条件是并列关系,应该是与运算,使用and关键字,正确的写法是:if( i != k and i != j and j != k)。有使用&&,大概是C系语言的习惯吧?
(3)If语句的后面为什么没有冒号呢?哈哈,莫非是手都写软了,没力气写了?
(4)print方法在Python3以后,是带括号的哦。
(5)最后还有一个隐形的bug,就是print语句是if语句的子句,所以,是要缩进的哦。兄弟,如果像现在这样没有缩进的话,if语句不是就没起作用了吗?结果会是所有的循环结果都会被打印出来。那是不是有点尴尬了?!
所以,正确的代码应该是这样的:
嗯哼!看起来差别也不是很大嘛~。
是啊!Bug要是大了,那还叫bug吗,也许该叫elephant了。
话说回来,如果代码的问题真像是elephant那样子的,一庞然大物,还用找吗?
关于程序bug的问题,送大家一句话吧:勿以恶小而为之,勿以善小而不为!说笑了,没有这么严重。
下面公布今天的问题。
本期代码设计需求:
企业发放的奖金根据利润提成。发放标准是利润:
(1)低于或等于10万元时,奖金可提10%;
(2)10万-20万时,高于10万元的部分,可提成7.5%;
(3)20万-40万时,高于20万元的部分,可提成5%;
(4)40万-60万时,高于40万元的部分,可提成3%;
(5)60万-100万时,高于60万元的部分,可提成1.5%,
(6)高于100万时,超过100万元的部分按1%提成,
要求:从键盘输入当月利润,即可计算出应发放奖金总数?
代码如下:
实际上,这个案例,我们在《Python入门》中讲过,因为是入门课程,我们在解决方案上使用的是更加直观易懂的方法,其代码可能更容易理解。
此处的代码,可能有一点抽象,它的价值正是在于它将利润的各个考核区段和奖金提成比例这两组数据,分别都存放在两个不同的列表中,但是它们具有相同的长度和对应关系。这是应用列表数据结构解决问题的典范,每一行代码都堪称经典,非常值得我们学习。
但是上面的代码,依然存在一些小bug,大家擦亮眼睛,仔细找找吧!
找到了,就写在留言里吧,方便明天我们一起对答案。
我发现,我们的读者大都好腼腆哦,不太喜欢留言。但是,参与度越高,你的学习乐趣越大,学习效果也越好啊,何乐不为呢?
好吧,且待答案明天揭晓。
提醒:惯例所有代码都是基于Pythpn3 的哦。