Python Every Day, 第 40 期
求 s = a + aa + aaa + aaaa + ..的值,其中a是一个1~10中的数字,
输入:num(初始数), times(执行次数),返回最终的结果
如:num = 2, times = 5,
返回结果为:2 + 22 + 222 + 2222 + 22222 的和
这是一道常见的计算题,相比于其他语言Python实现起来更加容易。
解决这道理,先分析一下a、aa、aaa他们的关系,就拿2举例吧
22 = 2 * 10 + 2
222 = 2 * 100 + 222222 = 2 * 1000 + 222
...
不难发现它们的规律,即 2 * 10^n + 前一个数。得出全部的数,再去求和即可。
大家可以自己思考,看看有几种解决办法,以下给出两种思路,仅供参考
方法一、
将num作为字符串处理,第一个数为num、第二个数为num*2...
这种方法,最为简单,一行代码即可解决
def temp(num, times):
return sum([int(num * i) for i in range(1, tims + 1)])
方法二、
通过遍历,求出每个元素的个数,然后进行求和
def temp(num, times):
total = 0
for i in range(1, tims + 1):
for j in range(i):
# 2* 10^j + 前一个数
total += num * (10 ** j)
return total
以上,便是今天的分享,希望大家喜欢,觉得内容不错的,欢迎点击「在看」支持,谢谢各位。
如需查看更多[Python Every Day]系列,请点击我的主页的【每日一题】菜单。
![640?](https://img-blog.csdnimg.cn/img_convert/f7c8f6f3d535d85895077817579f16af.png)
感谢您的阅读