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