Таким образом, вопрос требует найти самый большой продукт из тринадцати последовательных целых чисел в массивном целые числа. Я просмотрел некоторые из других решений SO, но никто из них не работает так же, как мое предлагаемое решение.Project Euler Number 8 Python
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, который на несколько порядков величины, но я не вижу своей ошибки.
Вы отделили свой «ответный ответ», поэтому он находится внутри цикла while. Это означает, что вы попробуете первые 13 чисел, получите '1666980L', а затем просто« верните », чтобы ничего не попробовать. – abarnert
Кроме того, если ни один из индексов не является отрицательным или не ограниченным, 'lst [a: b]' всегда будет иметь элементы 'b-a' (поскольку исключается' lst [b] '). 'my_list [j: j + 12]', таким образом, слишком короткий элемент. – jwodder
Несколько примечаний к этому коду: Если вы не используете древнюю версию (2.3? I forget ...) Python, не используйте 'long (...)' all over place; просто используйте 'int', и он будет переполняться до' long' автоматически по мере необходимости. Если вы используете _are_ с использованием древней версии, ваш код ошибочен; к тому времени, когда «продукт» был усечен или что-то еще, слишком поздно преобразовать его в 'long'; вам нужно сначала сохранить значения «long» в списке, после чего «длинные (...)» преобразования снова станут ненужными. – abarnert