项目Euler Number 8 Python

时间:2014-09-30 21:30:40

标签: python

所以这个问题要求在一个大整数中找到十三个连续整数的最大乘积。我已经查看了SO上的其他一些解决方案,但没有一个与我提出的解决方案完全相同。

from numpy import product
def function():
    x=#massive integer goes here, x is a string which I then turn into a list.
    my_list=[]
    for i in x:
        my_list.append(int(i))
    j=0
    while j+12 < len(my_list):
        answer=long(0)
        my_slice=my_list[j:(j+12)]
        test=long(product(my_slice))
        if test>answer:
            answer=test
            j+=1
        else:
            j+=1
        return answer

这段代码返回1666980L,这个数量级太小但我看不出我的错误。

2 个答案:

答案 0 :(得分:1)

这里至少有两个问题。

首先,正如评论中指出的abarnert一样,你缩进了你的回复答案,所以它在while循环中。这意味着您尝试第一批数字,获得1666980L,然后只需返回该数字而不尝试任何其他数字。

其次,正如jwodder在评论中指出的那样,[j:j+12]是一个12个数字的片段,而不是13个.Pix中的切片,范围等都是半开的,这意味着它们包含了所有内容从一开始,直到但不包括结束。所以,您需要[j:j+13]

答案 1 :(得分:-1)

你的切片不是13长python切片表示法是[m:n],排除了最后一个索引,所以你需要通过在切片上加一个来计算,即

my_slice=my_list[j:(j+12)]