1 引言

今天,我们来学习一下有规律的数求和。我们学过很多的算法公式,像一般的求和、求阶乘、求奇偶数等一类的非常简单普遍的算法太枯燥了,那么,今天我们来认识一个带有游戏性和规律性的一串数字求和。

2 问题

使用函数求和,求s= a + aa + aaa + … + aa…a 的值(最后一个数中 a 的个数为 n ),其中 a 是一个1~9的数字,例如:2 + 22 + 222 + 2222 + 22222 (此时 a=2 n=5 )。

3 方法

首先,我们定义一个函数,题目中要求要有两个参数,所以在函数名中设置两个参数,分别设置为a、b;然后,我们要讨论是否输入的两个参数满足要求,如果满足就运行,不满足就提醒错误;其次,我们就要写我们的算法——找到每一个数与前一个数的规律为(后一个数=前一个数+第一个数* 10^这个数的位数),我利用循环将每次循环后的数增加到一个列表中,最后再求列表中所有数的和,由于这种算法容易忽略第一数a因此在最后求和时千万别忘了加上a。最后按照函数格式打印出就完成求值了。

4 实验结果与讨论

最后通过实验证明,该方法执行有效。

代码清单 1

lis=[]

def putin(a,b):

   if a in range(1,10) and b in range(1,10):

       sum = a

       z = a

       for n in range(1,b):

           z = z+a*(10**n)

           lis.append(z)

       for j in lis:

           sum += j

       return sum

   else:

       return '数据错误'

a,b=map(int,input(':').split(','))

print(putin(a,b))

5 结语

在这个代码中,我们运用了定义函数、map函数格式输入两个参数(a,b)、for in循环、添加和调用列表求和。在玩这个数字求和游戏时,我们也能熟悉和复习这些用法,希望在快乐的打代码中我们都能有所收获。