自己写个str2int函数
from functools import reduce
d = {}
for i in range(10):
d[str(i)] = i
# d = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
def str2int(s):
def fn(x,y):
return 10*x + y
def char2num(s):
return d[s]
return reduce(fn, map(char2num, s))
for i in range(10):
d2 = input()
print(str2int(d2))
稍后再写个str2float函数,思路1是找出小数点的位置,之后在利用str2int
from functools import reduce
d = {}
for i in range(10):
d[str(i)] = i
# d = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
def str2int(s):
def fn(x,y):
return 10*x + y
def char2num(s):
return d[s]
return reduce(fn, map(char2num, s))
def finddot(s):
n = s.find('.')
return len(s) - n
for i in range(10):
try:
d2 = input()
n = finddot(d2) #确定小数点位置
d2 = d2.replace(".",'')
s = str2int(d2)
print(s/pow(10, n-1 ))
except KeyError as k:
print('Error!')
思路2: 按‘.’将输入字符串分割成两个整数部分,之后在连在一起
from functools import reduce
def char2num(s):
return d[s]
d = {}
for i in range(10):
d[str(i)] = i
for i in range(5):
s = input('请输入一个浮点数:')
s1, s2 = s.split('.')
a = len(s2)
result1 = reduce(lambda x, y: 10*x+y, map(char2num, s1))
result2 = reduce(lambda x, y: 10*x+y, map(char2num, s2))
# print(type(result1),result1)
# print(type(result2),result2)
result = result1 + result2/pow(10, a)
print(result)