Создайте список, который возвращает только палиндромы из списка чисел - PullRequest
0 голосов
/ 30 октября 2019

Я работаю над созданием программы, которая сначала проверит, являются ли числа в списке палиндромами, а затем распечатает только палиндромы. Я новичок в Python, поэтому не уверен, как правильно добавить их в новый список.

inp= input()

list1 = []
while int(inp) != 0:
    list1.append(inp)
    inp= 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 i == isPalindrome:
        list2.append(i(list1))

print(list2)

Например,

Ввод:

99
23
45
1221
0

Выход:

99 1221

1 Ответ

0 голосов
/ 30 октября 2019

У вас просто есть некоторые синтаксические ошибки в вашем коде, но ваша логика верна .. Вот что вы намеревались сделать,

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 в начале

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...