这里自己定义了:
①将字符串类型的数值转变为数值类型的方法
②向上取整
③向下取整
这里同时写了三种判断回数的方法:
# _*_ coding:utf-8 _*_
from functools import reduce
__author__ = 'admin'
'''
回数是指从左向右读和从右向左读都是一样的数
利用 filter()滤掉非回数
'''
# 将整数字符转变为整数
def str2int(str):
# 现将字符串中每个字符类型数字转变为数值类型的数字
def char2num(s):
return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]
return reduce(lambda x, y: x * 10 + y, map(char2num, str))
# 向上取整
def upper2Int(num):
ns = str(num)
if '.' in ns:
pos_digit = ns.find('.')
str_num = ns[:pos_digit]
num_upper = str2int(str_num) + 1
return num_upper
else:
# 这个数就是一个整数
return num
# 向下取整
def lower2Int(num):
ns = str(num)
if '.' in ns:
pos_digit = ns.find('.')
str_num = ns[:pos_digit]
num_lower = str2int(str_num)
return num_lower
else:
# 这个数就是一个整数
return num
# # 第一种判断方式,按位比照
# def judge_huishu(num):
# ns = str(num)
# ln = len(ns)
# if ln >= 2:
# limit = lower2Int(ln / 2)
# else:
# limit = 1
# for i in range(limit):
# if ns[i] == ns[ln - i - 1]:
# if i == limit - 1:
# return num
# else:
# break
# # 第二种方法,使用切片方式将字符串类型数值翻转后与原数值对比
# def judge_huishu(num):
# return num == str2int(str(num)[::-1])
# 第三种方法,使用reduce方法实现字符串中字符翻转
def judge_huishu(num):
return num == str2int(reduce(lambda x, y: y + x, str(num)))
output = filter(judge_huishu, range(1, 100))
print(list(output))