Ваш алгоритм неверен.Вам нужно будет проверить все значения от a до всех значений b, что можно решить, используя два цикла (внешний для a и внутренний для b).Я также предлагаю вам использовать a и b в качестве индексов цикла, что упрощает логику (облегчает держать в голове).
Также рассмотрите возможность переноса проверки палиндрома на его собственную функцию, чтобы упростить кодчтобы понять.
Я не программист Python, но вот мое решение на PHP:
function palindrome($x) {
$x = (string) $x; //Cast $x to string
$len = strlen($x); //Length of $x
//Different splitting depending on even or odd length
if($len % 2 == 0) {
list($pre, $suf) = str_split($x, $len/2);
}else{
$pre = substr($x, 0, $len/2);
$suf = substr($x, $len/2+1);
}
return $pre == strrev($suf);
}
$max = array(0, 0, 0);
//Loop $a from 999 to 100, inclusive.
//Do the same over $b for EVERY $a
for($a = 999; $a >= 100; $a--) {
for($b = 999; $b >= 100; $b--) {
$x = $a*$b;
if(palindrome($x)) {
echo $a, '*', $b, ' = ', $x, "\n";
if($x > $max[2]) {
$max = array($a, $b, $x);
}
}
}
}
echo "\nLargest result: ", $max[0], '*', $max[1], ' = ', $max[2];