任务是定义一个带参数x的函数,其中x是一个整数列表。函数应该打印出其中项目的中值。我的功能总是返回None,我试图解决它,但经过多次尝试后我的想法不合适。 代码:
def median(x):
x = sorted(x)
med_val = 0
if len(x) % 2.0 == 0:
for i in x:
if len(x[:i]) == len(x[i:]) + 1:
return x[i]
else:
for i in x:
if len(x[:i + 1]) == len(x[i: + 1]) + 1:
return (x[i] + x[i + 1]) / 2
print (median([1, 4, 2, 6, 8]))
任何想法如何使其发挥作用?
答案 0 :(得分:1)
在您的方法中,将print
语句替换为return expression
。在你的函数调用中,执行:
print(median(list))
PS:最好不要在python中使用list
作为变量名。
答案 1 :(得分:0)
这是一种略有不同的方法:
def median(x):
x = sorted(x)
middle_index = float(len(x)/2.0) # this 2.0 part is very important
if middle_index % 2 == 0: #check if it's even
med_val = float((x[int(middle_index)]+x[int(middle_index-1)])/2) # take the average of the 2 middle values if so
else: med_val = x[int(middle_index)] #otherwise, select the center value
return med_val #return median
lists = [[2, 1, 4, 6], [9,1,1,9,3], [1, 4, 2, 6, 8]]
for item in lists:
print median(item)
In: [2, 1, 4, 6]
Out: 3.0
In: [9, 1, 1, 9, 3]
Out: 3
In: [1, 4, 2, 6, 8]
Out: 4