Discuss / Python / 交作业

交作业

Topic source

sy107@CHINA

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

from functools import reduce

def str2num(s):
    if isinstance(s,int):
        return int(s)
    else:
        return float(s)

def calc(exp):
    ss = exp.split('+')
    ns = map(str2num, ss)
    return reduce(lambda acc, x: acc + x, ns)

def main():
    try:
        r = calc('100 + 200 + 345')
        print('100 + 200 + 345 =', r)
        r = calc('99 + 88 + 7.6')
        print('99 + 88 + 7.6 =', r)
    except Exception as e:
        logging.exception(e)


main()
print('END')

你的这个函数

isinstance(s,int)

计算的结果肯定不管怎么样都是false啊,因为参数s是列表ss传过来的元素,全是字符串,所以肯定全部都else了,纯粹多此一举。还有你引用这个logging库的意义何在?就这么喜欢码屎山吗兄弟?

辛克

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

看起来没啥问题,用其他数据跑也没啥问题,结果也没啥问题,实现过程乍一看没啥问题😂这个题出的有水平s={str}'99',误导我这样的新手以为99是int


  • 1

Reply