今天学到filter函数,做一道练习题,求回数的,我前前后后差不多用了半个小时才把它弄出来,先是有思路了然后写出来后一直报错,又改改换换,最后其实是某个小问题导致的,每次查这种小问题时都先怀疑是不是思路有问题,其实大部分时候都不是。后来去看别人写的代码,一行就搞定了,最后的最后,我被自己蠢哭了
以后还能不能愉快的写代码了?
题目:回数是指从左向右读和从右向左读都是一样的数,例如12321,909。请利用filter()滤掉非回数:
我的解答:
def is_palindrome(n):
s=str(n)
if len(s)==1:
return True
else:
lst=[c for c in s]
new_lst=[]
for x in range(len(lst)):
new_lst.append(lst[len(lst)-x-1])
if (''.join(new_lst))==s:
return True
else:
return False
output = filter(is_palindrome, range(1, 1000))
print(list(output))
牛人的解答:
def is_palindrome(n):
return str(n)==str(n)[::-1]
output = filter(is_palindrome, range(1, 1000))
print(list(output))
而且心中一直有个小疑问,什么打印各种形状、杨辉三角等,我之前都做过的题,每次重新去做,还得思考半天,写完后还得调试半天。我这是怎么了?是因为之前做了但是理解的不深导致的吗?可能还是境界不够吧,以后多练练,哪天这种入门小程序题完全不用思考就写出来了,我需要上来记录一下