python - 计算两个排序数组的中位数时将浮点数转换为整数的问题
问题描述
e
在2 和4的情况下,第 15 到 17 行的代码返回 3.0 q
,但我想要 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
推荐阅读
- javascript - Vue页面在本地读取数据后初始渲染失败
- angular - 这个语法在订阅中的含义是什么?
- javascript - 为什么 Animated.View 中的 ScrollView 不起作用?
- azure - Azure redis 缓存辅助数据库。无法访问
- typescript - Typescript 无法从通用接口属性推断出正确的类型
- windows - CEF4Delphi - 当浏览器处于活动状态时,我的程序不再使用 Alt-Tab 可见
- javascript - 将 SVG 元素转换为 img
- android - android.os.FileUriExposedException:
通过 Intent.getData() 暴露在应用程序之外 - c# - 获取实际用户特定文件夹的访问权限
- java - 使用来自另一个片段的会话更新一个片段部分