在计算两个排序数组的中位数时将 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