创建一个列表,该列表仅返回数字列表中的回文

时间:2019-10-30 00:51:11

标签: python-3.x list palindrome

我正在创建一个程序,该程序将首先检查列表中的数字是否是回文,然后仅打印出回文。我是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 :(得分:0)

您的代码中只有语法错误,但是您的逻辑是正确的。 这就是你打算做的,

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

在synatx上只有一点变化,但是逻辑与您相同。反向使用字符串切片。

我也用类型int(input())将输入强制转换为整数,就像您说的那样,您需要在list2中打印数字,如果您不希望整数,则只需替换所有int(input()) input()并在开始时将if条件更改为int(inp)!=0