1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3
4 from functools import reduce
5
6 CHAR_TO_INT = {
7 '0': 0,
8 '1': 1,
9 '2': 2,
10 '3': 3,
11 '4': 4,
12 '5': 5,
13 '6': 6,
14 '7': 7,
15 '8': 8,
16 '9': 9
17 }
18
19 def str2int(s):
20 ints = map(lambda ch: CHAR_TO_INT[ch], s)
21 return reduce(lambda x, y: x * 10 + y, ints)
22
23 print(str2int('0'))
24 print(str2int('12300'))
25 print(str2int('0012345'))
26
27 CHAR_TO_FLOAT = {
28 '0': 0,
29 '1': 1,
30 '2': 2,
31 '3': 3,
32 '4': 4,
33 '5': 5,
34 '6': 6,
35 '7': 7,
36 '8': 8,
37 '9': 9,
38 '.': -1
39 }
40
41 def str2float(s):
42 nums = map(lambda ch: CHAR_TO_FLOAT[ch], s)
43 point = 0
44 def to_float(f, n):
45 nonlocal point
46 if n == -1:
47 point = 1
48 return f
49 if point == 0:
50 return f * 10 + n
51 else:
52 point = point * 10
53 return f + n / point
54 return reduce(to_float, nums, 0.0)
55
56 print(str2float('0'))
57 print(str2float('123.456'))
58 print(str2float('123.45600'))
59 print(str2float('0.1234'))
60 print(str2float('.1234'))
61 print(str2float('120.0034'))