字符串累加公开课.docx
字符串累加1【问题】输入5,屏幕上显示”12345”结果如下图:该问题是将元素1,2,3,4,5前后拼接得到的结果,注意这些元素类型必须是字符串,才能得到这个结果,这是字符串的累加。输入5,屏幕是上显示”54321”运行结果如下图:如何在屏幕上打印如下的数字图形代码如下:代码如下:2【问题】二进制转换为十进制的代码实现以1011B转换为十进制为例讲解转换步骤方法1:逐位按权值求和(从左往右)1011B=1*23+0*22+1*21+1*20 分析:二进制转换为十进制的过程就是一个批量数据累加的过程,因此程序就可以用累加语句模板来实现二进制转换为十进制的过程。上述表达式中可以看成是4个x相加,每个x有什么特征呢?x是二进制数的某1位数字*相应的权值。因此,代码如下:方法2:逐位按权值求和(从右往左),这是取的方向不一样,结果是一致的。1011B=1*20+1*21+0*22+1*23 代码如下:上述代码中,如果熟练了就没有必要a,b先分开,可以直接写一个表达式。我们这样写为了让学生初学时更好理解。方法3:运用秦九韶算法,该算法是中国南宋时期的数学家秦九韶提出的一种多项式简化算法。具体可以问度娘。通俗的说十进制数x,再其尾数加1位数y,得到新的数z,z=10*x+y;同理对于任何二进制数x,其尾数加1位数y,得到新的数z,z=2*x+y。二进制数1011B分步过程如下表1011B二进制数每1位初始值s=0第1次取的数1s=2*s+ 1第2次取的数0s=2*s+ 0第3次取的数1s=2*s+ 1第4次取的数1s=2*s+ 1经过以上4个步骤,s的值就是该二进制数所对应的十进制数。怎么转换为代码呢,通过观察同样是累加问题。代码可以是如下:以上是二进制数转换为十进制数的3种方法,1,2两种方法其实是一样的,只是顺序不一样而已,第3种方法比较简单明了。其它进制转换为十进制数原理是一样的,只需要将相应的权值基数2改掉即可,如十六进制转为十进制数的话,把2改成16即可。3【python方法】Python中实现上述问题,同样可以用一句话实现。现介绍2种方法:列表生成式利用lambda表达式和reduce()函数除此之外,python利用int()方法,将一个数字字符串转换十进制数。int()方法原型class int(x, base=10)参数x - 字符串或数字。base - 进制数,默认十进制。 返回值 返回整型数据int()方法一般用于将数值字符串转换为数字,但是如果加上base参数,就可以将不同进制数转换为十进制数。如上述的二进制数”1011B”转换可以用下面的代码。4【练习】编程实现s=1+2+4+8+16+32+.+2n(n<=200)(提示:用普通方法和int()方法可以对比试试,时间效率效果不一样的)5【一点体会】以上是二进制数转换为十进制数的原理及代码实现。我们先给出数学方法,然后将它转换为代码。虽然python提供了简短的语句来实现该问题,但是学生更应该知道原理(解决问题的方法),然后教学生如何将一个问题转换为数学步骤(建模),并转换为程序代码的能力。我们不需要孩子个个当程序员,但一定要具备计算思维:分析问题、寻找规律、解决问题能力,通过这样的训练打破常规思维,达到培养创新实践能力。以上是自己的教学体会,有什么问题建议,欢迎交流QQ 9803052