用来练手的python 练习题其十八,原链接 : python练习实例18
题干: 求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制
这种类型的叠数相加,让我不禁联想到了python中,字符串的乘法运算,那么能否利用字符串的乘法以及字符串与整型的互相转换来巧妙地完成这个问题呢,答案是肯定的。我们下面先来看几个测试结果:
a = "2" * 5
print(type(a))
print(a)
b = int(a)
print(type(b))
print(b)
输出结果如下:
我们发现,在python中,字符串和整型之间的转换是非常简单方便的。在计算叠数如22222时,如果我们使用整型矩阵,所需要的步骤就非常繁琐。反观使用字符串类型,我们可以轻松地构建一个叠数。原题解法的源代码如下:
def add_special(value, number):result = 0"""value 是选中的数字number 是相加的数字个数"""for i in range(number):value_str = str(value) * (i+1)result += int(value_str) return result
实验如下: