求和递增的一系列数字,如:2+22+222+2222


number_of_terms = 5
sum1=0
for i in range (1,number_of_terms+1):
num=eval('2'*i)
sum1+=num
print(sum1)

所以上面给出的代码是有效的。过程就像2+22+222+2222+。。。。n次。我无法用不同的方法来解决它,所以我使用了eval()函数,但我尽量避免使用它。你能告诉我没有eval()我该怎么做吗?number_of_terms5的预期输出为24690。

您可以将sum嵌套列表理解一起使用作为:

n = 2  # one digit number for usage
count = 5  # count of numbers required from series
my_sum = sum(sum(n*10**j for j in range(i)) for i in range(1, count+1))
# my_sum holds: 24690

它基于算术计算,不需要从字符串到int的类型转换,因此更高效。

您不需要eval,只需使用int:

number_of_terms = 5
sum1=0
for i in range (1, number_of_terms + 1):
sum1 += int('2' * i)
print(sum1)

或者你可以做一个生成器如下:

print(sum(int('2' * (i + 1)) for i in range(number_of_terms)))

两个代码输出:

24690

相关内容

最新更新