4

所以首先,我需要从 455,111,451 到 455,112,000 的范围内提取数字。我可以手动完成,我只需要 50 个数字,但这不是重点。

我尝试过了:

for a in range(49999951,50000000):
print +str(a)

我应该怎么办?

4

4 回答 4

14

利用sum

>>> sum(range(49999951,50000000))
2449998775L

它是一个内置函数,这意味着您不需要导入任何东西或做任何特殊的事情来使用它。在您来这里询问之前,您应该始终查阅文档或教程,以防它已经存在 - 此外,StackOverflow 具有搜索功能,它也可以帮助您找到问题的答案。


在这种情况下,该sum函数接受一个整数列表,并以如下类似的方式将它们递增地添加到彼此中:

>>> total = 0
>>> for i in range(49999951,50000000):
    total += i

>>> total
2449998775L

也 - 类似于Reduce

>>> reduce(lambda x,y: x+y, range(49999951,50000000))
2449998775L
于 2013-07-04T14:27:42.887 回答
5

sum是显而易见的方法,但如果您有一个很大的范围,并且每次通过递增每个数字来计算总和可能需要一段时间,那么您可以用数学方法代替(如图所示sum_range):

start = 49999951
end = 50000000

total = sum(range(start, end))

def sum_range(start, end):
    return (end * (end + 1) / 2) - (start - 1) * start / 2

print total
print sum_range(start, end)

输出:

2449998775
2499998775
于 2013-07-04T14:37:49.753 回答
0

如果你想得到数字的总和,我没有很好地回答你的问题

sum = 0
for a in range(x,y):
    sum += a
print sum

如果你想在列表中有数字:

lst = []
for a in range(x,y):
    lst.append(a)
print lst
于 2013-07-04T14:31:01.750 回答
0

尝试这个!!

import re

fhand = 'Actual_regex_sum_1232793.txt'
fopen = open(fhand)
nlist = list()
for lines in fopen:
line = lines.rstrip()
stuff = re.findall('([0-9]+)', line)

if len(stuff) < 1:
    continue

for i in range(len(stuff)):
    num = int(stuff[i])
    nlist.append(num)
print(sum(nlist))
于 2022-01-09T10:18:45.483 回答