from functools import reduce
def str2float(s):
DIGITS = {
'0': 0,
'1': 1,
'2': 2,
'3': 3,
'4': 4,
'5': 5,
'6': 6,
'7': 7,
'8': 8,
'9': 9
}
def char2num(s):
return DIGITS[s]
s_int = s.split('.')[0]
s_frac = s.split('.')[1]
return reduce(lambda x, y: x * 10 + y, map(char2num, s_int)) + reduce(
lambda x, y: x * 0.1 + y, map(char2num, s_frac[::-1])) / 10
print('str2float(\'123.456\') =', str2float('123.456'))
if abs(str2float('123.456') - 123.456) < 0.00001:
print('测试成功!')
else:
print('测试失败!')
1、这种方法通过将逗号进行拆分,前后两部分通过不同的运算得到想要的解答
# 回数是指从左向右读和从右向左读都是一样的数,例如12321,909。请利用filter()筛选出回数:
def is_palindrome(n):
x = str(n)
return x == x[::-1]
# 测试:
output = filter(is_palindrome, range(1, 1000))
print('1~1000:', list(output))
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]:
print('测试成功!')
else:
print('测试失败!')