Discuss / Python / 第三题研究了两天

第三题研究了两天

Topic source

Alice_Biggee

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

def str2float:

    def f1(x,y):

        return x*10+y

    def f2(x,y):

        return x/10+y

    s1,s2=s.split('.')

    s2=s2[::-1]

    a1=reduce(f1,map(int,s1))

    a2=reduce(f2,map(int,s2))

    return a1+a2

陌夭仪

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

s2字符串变化后是4.56少了一次计算,在s2后面加一个0就正确了,想法和我的一样

附改良代码

# -*- coding: utf-8 -*-

from functools import reduce

def str2float(s):

    def f1(x,y):

        return x*10+y

    def f2(x,y):

        return x/10+y

    s1,s2=s.split('.')

    s2=s2[::-1]

    s2=s2+'0'

    a1=reduce(f1,map(int,s1))

    a2=reduce(f2,map(int,s2))

    return a1+a2

print('str2float(\'123.456\') =', str2float('123.456'))

if abs(str2float('123.456') - 123.456) < 0.00001:

    print('测试成功!')

else:


  • 1

Reply