我的代码一直返回-1而不是实际的答案

时间:2018-05-29 16:21:37

标签: python python-3.x

def Add2NumbersTogether(x,y):

    try:

        s = str(x) + '.'
        y = float(s)
        print(y)
        return (x + y)
    except:
        return - 1


n = 90.09
v = 9

a = Add2NumbersTogether(n,v)
print(a)

3 个答案:

答案 0 :(得分:6)

您正在尝试将90.09.转换为浮点数。发生这种情况是因为语句s = str(x) + '.'将90.09转换为字符串并将.附加到其中。由于此字符串中有两个.,当我们尝试将其转换为float时,将通过返回-1抛出,捕获和处理异常。

为了记录这就是为什么捕获所有异常是一个坏主意。您应该只捕获您期望并可以处理的例外情况。

答案 1 :(得分:0)

如果要添加到数字,示例代码可以是:

def Add2NumbersTogether(x,y):
    return x+y

无需将x和y转换为字符串类型。

将数据转换为字符串类型(即str)时,实际上是附加了两个字符串。

答案 2 :(得分:0)

这里的问题是,通过将Python解释为float的变量转换为字符串并将其添加到字符串.,您将创建一些通常不再是数字的内容,并且无法将其转换回浮动。因此抛出异常。你可能不清楚的是,通过Python解释器传递变量

  

v = 90.09

它会自动将其存储为浮点数。据说,我不清楚为什么你会采用这样的路线来对两个数字项进行求和。