题目
回数是指从左向右读和从右向左读都是一样的数,例如12321,909。请利用filter()滤掉非回数:
def is_palindrome(n):
pass
# 测试:(求1000以内的回文数)
output = filter(is_palindrome, range(1, 1000))
print(list(output))
思路
1、构建一个11开始的整数序列,无限生成。
2、定义一个筛选函数:
①把整数换成字符串:str(n)
②切片字符串,判断是否前后相等,把不想等的筛选掉。
3、定义一个生成器,不断返回下一个回文数
4、设置退出循环的条件:1000以内的回文数
答案:
谁能想到,答案只有一句话?
defis_palindrome(n):
return n ==int(str(n)[::-1])
①把n转换为str
②[::-1] 切片的知识,意思是将整个字符串反过来
③判断 n 是否等于 反过来的切片,如果等于,就是True。