它不会追加为浮动 Python |问题 #18



我正在为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

我看不出问题出在哪里。

is_integer是在float类型上运行的方法。您忘记了调用它,所以它的计算结果为True,因为它返回了一个有(而不是什么都没有(的内建。

只需更换

if r.is_integer:

带有

if r.is_integer():

最新更新