def median(lista):
if len(lista) % 2 == 1:
float(x) = (len(lista))/(2)
lista2 = sorted(lista)
y = x + 0.5
return lista2[y]
else:
x = len(lista)
total = 0
for i in lista:
total += i
return total/x
这个功能出了什么问题?它显示错误
File" python",第3行 SyntaxError:不能分配给函数调用
我知道你可以告诉我如何以100万种不同的方式编写这个函数,但是你能解释为什么这个版本不起作用吗?
提前致谢。
答案 0 :(得分:0)
float
转换适用于作业float(x) = (len(lista))/(2)
的错误一侧。将其移至另一个,如x = float((len(lista))/(2))
,代码可以
答案 1 :(得分:0)
我认为你试图获得一半的浮动值;是吗?
如果是这样,您必须在功能上需要的地方应用float
转换,而不是将其作为语言修饰符:
x = float(len(lista))/(2)
或者简单地用浮点常数强制该结果:
x = len(lista) / 2.0
答案 2 :(得分:0)
您的功能有几个问题:
def median(lista):
if len(lista) % 2 == 1:
float(x) = (len(lista))/(2) # you assign to a function?
lista2 = sorted(lista)
y = x + 0.5 # y is now a float
return lista2[y] # accessing the float index?
else: # here you calculate the average
x = len(lista)
total = 0
for i in lista:
total += i
return total/x
偶数列表的中位数不是平均值。它是中间两个元素的平均值。
您可以简单地编写以下函数:
def median(lista):
listb = sorted(lista)
n_lista = len(lista)
half = n_lista//2
if n_lista % 2:
return lista[half]
else:
return 0.5*(lista[half-1]+lista[half])