OverflowError:range()结果包含太多项目,但它没有

时间:2017-11-28 19:04:36

标签: python python-2.7

我有这个for循环:

for i in range(1000000000, 1000000030):
    foo(i)

执行时会出现此错误:

Traceback (most recent call last):
  File "/CENSORED/Activity.py", line 11, in <module>
    for i in range(1000000000, 10000000030):
OverflowError: range() result has too many items.

据我所知,这个range - 对象应该有30个元素......

问题出在哪里?

编辑:

我删除了额外的零,现在我明白了:

Traceback (most recent call last):
  File "/CENSORED/Activity.py", line 12, in <module>
    factorizeInefficient(i)
MemoryError

编辑2:

def factorizeInefficient(n):
    teiler = list()
    for i in range(n):
        if i != 0:
            if (n%i)==0:
                teiler.append(i)
    print teiler

我自己找到了解决方案:此处还有一个范围(n)对象,这会导致内存错误......

一个额外的问题:你们怎么知道这是python 2? (顺便说一下你......)

1 个答案:

答案 0 :(得分:1)

复制/粘贴代码的range()部分:

>>> len(range(1000000000, 10000000030))
9000000030

因此该范围内实际上有大约90亿个元素。你的第一个参数可能缺少零,或者第二个参数的零太多; - )