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循环、添加和调用列表求和。在玩这个数字求和游戏时,我们也能熟悉和复习这些用法,希望在快乐的打代码中我们都能有所收获。