首页 > 解决方案 > 创建一个仅从数字列表中返回回文的列表

问题描述

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

标签: python-3.xlistpalindrome

解决方案


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

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为开头


推荐阅读