Discuss / Python / 第三题:求指导这段程序问题在哪里

第三题:求指导这段程序问题在哪里

Topic source

报错,也不清楚我这个情况是哪里的问题

return a/1000 ^ SyntaxError: invalid syntax

在此插入代码
def str2float(s):
    def fn(x,y):
        return 10*x+y
    def str2num(s):
        return {'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'0':0,'.':None}[s]
    a=reduce(fn,map(str2num,s)
    return a/1000
L =str2float('123.456')

苏子长安

#2 Created at ... [Delete] [Delete and Lock User]

return前一行少了')'啦,错误肯定不是在报错那一行就是在之前一行啊。 然后,然后再改吧。

错误一:语法错误!“ 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

Reply