好的,问题是要求在数字列表中找到中位数(中间数)。如果列表具有偶数数字,则返回两个中间数的平均值。
我发现一些代码在网站上不起作用,但在PyCharm中起作用。我想这是因为代码学院的学习python的一些代码是旧的(例如他们的print函数和raw_input()现在已被弃用)
以下内容不适用于CodeAcademy
var types = {};
for(var i=1; i<=3; i++){
types["ashish"+i] = 'The value of dynamic variable, val';
}
注意:传递[4,5,5,4]
时,上面返回4.0而不是4.5然而,当我将/ 2更改为/2.0时,它会起作用。
def median(ls):
ls = sorted(ls)
length = len(ls)
median = 0.0
temp = 0
if length % 2 == 0:
temp = int(length / 2)
median = float (ls[temp-1] + ls[temp]) / 2 #why is this a problem?
return median
else:
temp=int((length-1) / 2)
median = ls[temp]
return median
注意:传递[4,5,5,4]
时,上面正确返回4.5所以,即使我已经想出如何解决这个问题,我想知道为什么它发生在即使两个代码示例都在较新版本的python中工作,一个更正确或'更清洁'和为什么?
答案 0 :(得分:0)
好的,我认为在第一个返回奇怪结果的代码示例中发生的事情是Python将前两个数字转换为int以便除以int(传递时产生4 [4,4,5,5](排序后))然后输出答案 (4)浮动给出4.0。但当我除以2.0时,它会将这些数字转换为浮点数,然后首先给出正确的4.5。这也允许我删除显式转换为浮动,并在测试时使用代码学院