Я пытаюсь решить проблему 4 в проекте Эйлера, который:петля заканчивается без причины
палиндромного числа читается одинаково в обоих направлениях. Самый большой палиндром, изготовленный из продукта двух двузначных чисел, составляет 9009 = 91 × 99. Найти самый большой палиндром из продукта двух трехзначных чисел.
Исходный код, который я написал это:
def check_reversed(number):
number = str(number)
if number == number[::-1]:
return True
for x in range(100,1000):
for y in range(100,1000):
if check_reversed(x*y) == True:
print x,y,x*y
По какой-то причине второй цикл останавливается на номер 583 и выдает неправильный ответ. Когда я изменяю диапазон, хотя второго цикла «для» (584,1000), он выводит правильный ответ. Мой вопрос: почему вторая петля заканчивается на номер 583?
EDIT: РЕШИТЬ: (Спасибо за вашу помощь!)
def check_reversed(number):
number = str(number)
return number == number[::-1]
max_pal = 0
for x in range(100,1000):
for y in range(100,1000):
if check_reversed(x*y) == True:
if x*y > max_pal:
max_pal = x*y
print max_pal
вас может уменьшить 'check_reversed', чтобы' return number == number [:: - 1] 'вместо использования' if' .. –
Возможно, вы получаете ответ палиндрома, но не самый большой. Но это странно, что он останавливается ... –
Не используйте '== True' в тесте' if'; это то, что 'if' ** для **. –