自己做题时想的两种方法,供大家参考,有不足也欢迎指出
from functools import reduce
#**********第一种方法*****************
def is_palindrome(n):
s=str(n) #将数值转成字符串,用len求出长度,在将其顺序倒置,形成回文
reverse=[]
for i in range(len(s)):
reverse.append(s[-i-1])
def char2num(L):
return {'0':0,
'1':1,'2':2,'3':3,
'4':4,'5':5,'6':6,
'7':7,'8':8,'9':9}[L]
rev=reduce(lambda x,y:x*10+y,map(char2num,reverse))
return rev%n==0
#**********第二种方法***********************
def is_palindrome2(n):
rn=[]
i=n
while i>0:
rn.append(i%10) #这两个顺序一定给要注意,迭代除10求余恰好使数字倒置
i=i//10
reverse=reduce(lambda x,y:x*10+y,rn )
print('rn=',rn)
print('n=',n)
print('reverse=',reverse)
return reverse%n==0
#**********************************************
output=list(filter(is_palindrome,range(1,100)))
print(output)
output2=list(filter(is_palindrome2,range(1,100)))
print(output2)