问题
编写函数,计算形式如 a + aa + aaa + aaaa + … + aaa…aaa的表达式的值,其中a为小于10的自然数。函数由两个参数,一个为 a 的值,一个为数的个数。
如:输入 5和4,计算为:
5+55+555+5555
输出:
6170
解法
常规计算法:
对于上面示例中的 5和4,第4个数为 5555,即 5+50+500+5000。把各个数求和即可。
1
2
3
4
5
6
7
def cal(a, n):
# result 为求和结果;t为每轮的值
result, t = 0, 0
for i in range(n):
t = t * 10 + a
result += t
return result
使用 Python 中的 eval 将字符串转为数值:
1
2
3
4
def cal(a, n):
a = str(a)
result = sum(eval(a * i) for i in range(1, n + 1))
return result