Ваш код не гарантирует, что он печатает самый большой продукт, так как позже может быть продукт меньшего размера, который заменит его.Чтобы исправить это, инициализируйте t
равным нулю и замените ваше условие на
if z==s and int(z)>t:
t = int(z)
или, что эквивалентно,
if z==s:
t = max(t,int(z))
Редактировать : исправлены проблемы типа int / stringвыше.Это немного чище, чтобы избежать преобразования в строку и обратно в int следующим образом:
def isPalindrome(x):
s = str(x)
return s == s[::-1]
t = 0
for x in range(100, 1000):
for y in range(100, 1000):
z = x * y
if isPalindrome(z) and z > t:
t = z
print t