繁体   English   中英

欧拉八号蟒蛇计划

[英]Project Euler Number 8 Python

因此,该问题要求找到一个大整数中13个连续整数的最大乘积。 我已经研究了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,它的数量级太小,但是我看不到我的错误。

这里至少有两个问题。

首先,正如abarnert在评论中指出的那样,您已经缩进了返回答案,因此它位于while循环中。 这意味着您尝试第一批数字,得到1666980L,然后不做任何其他操作就将其返回。

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

您的切片不是13长的python切片符号为[m:n),排除了最后一个索引,因此您需要通过在切片中添加一个来解决此问题,即

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM