1

我正在为Codeabbey中的问题 #18编写此代码。我需要计算一个数字数组的平方根[150, 0, 5, 1 10, 3]我必须将此数组分成三个数组 (x,n)[[150, 0], [5, 1], [10 3]]其中 x: 是我要计算平方根的数字和 n: 是我拥有的次数尝试公式 r = (r + x / r) / 2 得到结果,即 r,r 从 1 开始。这没有问题,问题是当我必须附加结果时,因为如果 r 是3.0我必须将其附加为整数:3但如果 r 是3.964我必须将其附加为浮点数。

def squareRoot():
    rawArr = [int(n) for n in input().split()]
    arr = [rawArr[i:i+2] for i in range(0,len(rawArr)-1,2)]
    results = []

    for a in arr:
        x,n = a
        r = 1.0
        for i in range(0,n):
            r = (r + x / r) / 2
        if r.is_integer:
            results.append(str(int(r)))
        else:
            results.append(str(round(r,3)))
    return " ".join(results)

输入是:

150 0 5 1 10 3

输出是:

'1 3 3'

如果我不使用 is_integer(),这就是我得到的:

'1 3.0 3.196xxxxx'

输出应该是什么:

1 3 3.196

我看不出问题出在哪里。

4

1 回答 1

2

is_integer是您在float类型上运行的方法。你忘了调用它,所以它的计算True结果是它返回一个内置的东西(不是什么都没有)。

只需更换

        if r.is_integer:

        if r.is_integer():
于 2020-10-31T21:20:51.633 回答