第三题:求指导这段程序问题在哪里
Topic source错误一:语法错误!“ a=reduce(fn,map(str2num,s)”少了右半个括号 错误二:“str2num(s)”此函数结合map函数可以将带单、双引号的字符串(“123”)转换成不带引号的数字(整数),只限能转成整数的字符(如:“0,1,2,3,4,5,6,7,8,9”),所以不能把“.”也使用此进行转换
思路: 1、以字符串中的“.”为核心进行分析,计算出整数位或小数位 2、然后将整个字符串中的小数点“忽略”,当成一个没有小数点的字符串进行处理,最后进行使用乘或10的n次方进行还原
from functools import reduce
def str2float(s):
def fn(x,y):
return 10*x+y
flo = len(s)-s.index('.')-1
s=s.replace('.','')
print(type(s))
#print(s)
def str2num(s):
return {'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'0':0,}[s]
#print(list(str2num(s)))
b=(reduce(fn,map(str2num,s)))/10**flo
return b
print('str2float(\'123.456\') =', str2float('123.456'))
- 1
造锅炉的亦君
报错,也不清楚我这个情况是哪里的问题