欢迎来到常cc的博客

人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。
扩大
缩小

Python实现回数

题目:回数是指从左向右读和从右向左读都是一样的数,例如 12321,909。请利用 filter()滤掉非回数:

思路:要实现回数判断,主要是将输入的数找到其各个位置的值,然后判断前后相对应的位置是否值相同

代码实现:

一、利用数组(列表实现):

 1 # -*- coding: utf-8 -*-
 2 def is_palindrome(n):
 3   N=[]
 4   while n!=0:
 5     N.append(n%10)
 6     n=n//10
 7   return N==N[::-1]
 8 output = filter(is_palindrome, range(1, 1000))
 9 print('1~1000:', list(output))
10 if list(filter(is_palindrome, range(1, 200))) == [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191]:
11     print('测试成功!')
12 else:
13     print('测试失败!')

二、字符串实现

1 def is_palindrome(n):
2     nn = str(n) #转成字符串
3     return nn == nn[::-1] #反转字符串并对比原字符串返回true/false
4 print list(filter(is_palindrome,range(1,1000)))

三、lambda表达式

print list(filter(lambda n : str(n)==str(n)[::-1],range(1,1000))) #str(n)同上

 

posted on 2021-07-08 15:06  常cc  阅读(183)  评论(0编辑  收藏  举报

导航

https://qun.qq.com/join.html