Discuss / Python / 第三个作业(需要修改老师的判断代码,不适用这里,仅供参考)

第三个作业(需要修改老师的判断代码,不适用这里,仅供参考)

Topic source

Earth奇人

#1 Created at ... [Delete] [Delete and Lock User]
# -*- coding: utf-8 -*-
# 利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456:
from functools import reduce

i = 0

def str2float(s):
    def add(s, s1):
        global i
        if isinstance(s, int) and isinstance(s1, int) and (i == 0):
            return s * 10 + s1
        elif isinstance(s, int) and i ==0:
            i = 1
            return s
        elif isinstance(s1, int) or isinstance(s1, float) :
            i = i + 1
            i1 = i 
            while i1 > 1:
                s1 = s1 / 10
                i1 = i1 - 1 
            return float(s) + s1
    def int1(s2):
        if s2 == '.':
            return '.'
        else:
            return int(s2)
    
    return reduce(add, map(int1, s))
# print(list(map(int1,'123.456')))
result = str2float('123.456')
print('str2float(\'123.456\') =', result)
if abs(result - 123.456) < 0.00001:
    print('测试成功!')
else:
    print('测试失败!')

eval函数也可以,https://blog.csdn.net/qq_29883591/article/details/53443062

print(eval("123.456"))

  • 1

Reply