У вас просто есть некоторые синтаксические ошибки в вашем коде, но ваша логика верна .. Вот что вы намеревались сделать,
inp= int(input())
list1 = []
while inp != 0:
list1.append(inp)
inp = int(input())
def isPalindrome(N):
str1 = "" + str(N)
len1 = len(str1)
for i in range(int(len1 / 2)):
if (str1[i] != str1[len1 - 1 - i]):
return False
return True
list2 = []
for i in list1:
if isPalindrome(i):
list2.append(i)
print(list2)
Также, если вы хотите сделать вашу программу намного короче, чем я рекомендую это,
def isPalindrome(N):
str1 = str(N)
if str1[::-1] == str1:
return True
else:
return False
Небольшое изменение в синтаксисе, но логика такая же, как и у вас. Он использует нарезку строк в обратном направлении.
Также я набрал тип приведения ввода к целым числам, используя int(input())
, как вы сказали, вам нужно, чтобы числа печатались в list2
, если вы не хотите целых чисел, простозамените все int(input())
на input()
и измените условие if на int(inp)!=0
в начале