Discuss / Python / 交个半成品作业,兄弟们帮看一下哪里不对了

交个半成品作业,兄弟们帮看一下哪里不对了

Topic source
def is_palindrome(n):
    N = len(str(n))
    i = 0
    while i in range(N):
        if str(n)[i] == str(n)[-i-1]:
         return n
        else:
         break

output = filter(is_palindrome, range(1, 2000))
print(list(output))

因为想让这段代码可以从不限长度的自然数中找回数,所以这里把整数转换成字符串,逆向对比首尾的值是不是一样。但是返回的数据在1000-2000部分好像只对比了str(n)[0]和str(n)[-1],没有对比第二位和第三位数,哪里出问题了?

NeptuneAR

#2 Created at ... [Delete] [Delete and Lock User]

举个例子,1921这个数,在你第一个if的地方满足条件就直接return了,所以会出错

NeptuneAR

#3 Created at ... [Delete] [Delete and Lock User]
在此插入代码

def is_pali(n): a=str(n) b=len(a) i=0 while a[i]==a[b-i-1]: i=i+1 if i>b//2: return True
output=filter(is_pali, range(1, 1500)) print(list(output))

大概这样改一下是对的


  • 1

Reply