python回文数,第一段代码输出的回文数中包含0,但第二段代码输出的结果中没有0,求大神答疑解惑!

第一段代码defhws(n):n=str(n)returnn==n[::-1]output=filter(hws,range(0,100000))s=list(outpu... 第一段代码
def hws(n):
n=str(n)
return n==n[::-1]

output = filter(hws, range(0,100000))
s=list(output)
print(s)
with open('D:/回文数.txt', 'w') as f:
f.write(str(s))
input()

第二段代码
def hws(n):
i=0
while ((i<int((len(str(n))/2))) and (str(n)[i]==str(n)[-1-i])):
i=i+1

#逐个判断前一半字符是否等于后一半字符,直至遇到不相等(即不是回文数)或全部相等(此时i等于int((le(str(n)))/2)),说明是回文数,后续通过i的值就可返回回文数
#注意一位数的情况,此时i=0,int((len(str(n)))/2)也等于0,不满足i<int((len(str(n)))/2)的条件,不执行while循环,直接执行i=int((len(str(n)))/2)之后的return n操作

if i==(int((len(str(n)))/2)):
return n

output = filter(hws, range(0,100000))
s=list(output)
print(s)
with open('D:/回文数.txt', 'w') as f:
f.write(str(s))
print(hws(0))
input()
展开
 我来答
灰色555
2016-08-15 · TA获得超过240个赞
知道小有建树答主
回答量:128
采纳率:0%
帮助的人:58.7万
展开全部
filter 函数引起的啊,为0 就不返回了。

if i==(int((len(str(n)))/2)):
return n
改成
if i==(int((len(str(n)))/2)):
return str(n)
就可以了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式