在计算两个排序数组的中位数时将 float 转换为 int 的问题
Issue in converting float to int while calculating median of two sorted array
在 e
为 2 且 q
为 4 的情况下,第 15 至 17 行的代码返回 3.0,但我想要 3。
for i in array2:
array1.append(i)
arr=array1
arr.sort()
n = len(arr)
if n % 2 == 0:
z = n // 2
e = int(arr[z])
q = int(arr[z - 1])
if(e+q%2==0):
ans=int((e + q) // 2) #i did int() and also used // while dividing
return ans #returnin 3.0 instead of 3
else:
ans = (e + q) / 2
return ans
else:
z = n // 2
ans = arr[z]
return ans
您有一个优先顺序问题:
e+q%2==0
被评估为:
e+(q%2)==0
如果 e 不为零,则永远不会成立。因此,您正在进入 else
子句并执行浮点除法。
您将要使用:
(e+q) % 2 == 0
在 e
为 2 且 q
为 4 的情况下,第 15 至 17 行的代码返回 3.0,但我想要 3。
for i in array2:
array1.append(i)
arr=array1
arr.sort()
n = len(arr)
if n % 2 == 0:
z = n // 2
e = int(arr[z])
q = int(arr[z - 1])
if(e+q%2==0):
ans=int((e + q) // 2) #i did int() and also used // while dividing
return ans #returnin 3.0 instead of 3
else:
ans = (e + q) / 2
return ans
else:
z = n // 2
ans = arr[z]
return ans
您有一个优先顺序问题:
e+q%2==0
被评估为:
e+(q%2)==0
如果 e 不为零,则永远不会成立。因此,您正在进入 else
子句并执行浮点除法。
您将要使用:
(e+q) % 2 == 0