好,所以問題要求在數字列表中找到中位數(中間數字)。如果列表中有偶數的數字,則返回兩個中間數字的平均值。Codeacademy的python數學除以int和float分隔時會變得很奇怪。動態鍵入/投射問題
我碰到一些代碼在網站上不起作用,但在PyCharm中有效。我想這是因爲一些在代碼學院的學習蟒蛇的代碼是舊的(例如它們的打印功能和的raw_input()現在已廢棄)
下面不上CodeAcademy
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]
但是當我將/ 2更改爲/2.0像下面它的工作時,上面返回4.0而不是4.5。
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.0 #here
return median
else:
temp=int((length-1)/2)
median = ls[temp]
return median
注:正確上述返回4.5過去了[4,5,5,4]
所以,即使我已經找到了如何解決這個問題,我想知道爲什麼會發生即使這兩個代碼示例都適用於較新版本的python,但它是更正確還是更「乾淨」,爲什麼?