首先,对不起,我的英语和布局不好。我在中国是一个Python初学者,这是我用英语问的第一个问题。你知道吗
问题是:
我试图使用filter(is_palindrome
,range(11000))生成像121这样的回文数。与这个问题密切相关的代码是is_palindrome(n)
函数中的l=[int(i)for i in str(n)]。调试器显示当n=11时,l=[]而不是[1,1],然后IndexError: list index out of range
发生在if l[0] != l[-1]
。你知道吗
我想知道为什么以及如何让它成为现实。你知道吗
源代码:
def is_palindrome(n):
p = True
l = [int(i) for i in str(n)]
while len(l) != 1:
if l[0] != l[-1]:
p = False
break
l.pop(0)
l.pop(-1)
return p
print(list(filter(is_palindrome, range(1, 1000))))
另外,我知道有一种更简单的方法,比如return str(n)==str(n)[:::1],但我只想试试另一种:)
因此,如何跟踪错误,请尝试以下方法:
只需打印一下,看看函数在索引错误时失败的地方:
输出:
您可以清楚地看到,当l为[](空)时,它会给出错误,现在让我们修复它并运行代码
以下是经过一些修改后的函数:
输出:
相关问题 更多 >
编程相关推荐