首页 叠数求和
文章
取消

叠数求和

问题

编写函数,计算形式如 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
本文由作者按照 CC BY 4.0 进行授权