You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

计算两个有序数组中位数时的浮点转整数异常:预期返回3却得到3.0

解决Python中位数返回浮点型而非整数的问题

嘿,我一眼就发现问题出在哪了——运算符优先级搞混了,导致你写的整数处理分支根本没被触发!

你看这段条件判断:

if(e+q%2==0):

在Python里,取模运算符%的优先级比加法+高,所以这行代码实际计算的是 e + (q % 2),而不是你想要的 (e + q) % 2。

当e=2、q=4时,2 + (4%2)的结果是2+0=2,显然不等于0,所以条件不成立,代码直接走到了else分支,执行(e+q)/2,也就是6/2=3.0,自然返回的是浮点型结果。

修正方案

只需要给e+q加上括号,确保先计算两者的和再取模:

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])
    # 修正运算符优先级,给e+q添加括号
    if (e + q) % 2 == 0:
        ans = (e + q) // 2  # 这里int()可以省略,因为//对整数运算返回整数
        return ans
    else:
        ans = (e + q) / 2
        return ans
else:
    z = n // 2
    ans = arr[z]
    return ans

修正后,当e=2、q=4时,(2+4)%2=6%2=0,条件成立,代码进入整数处理分支,(2+4)//2会返回整数3,完全符合你的预期。

内容的提问来源于stack exchange,提问作者Inderjeet Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 12:47:37