def median(numlist):

low=numlist[0]

high=numlist[0]

median=0

for n in numlist:

if n<=low:

low=n

elif n>=high:

high=n

while low<=high:

if low==high:

median=low

elif low==high-1:

median=(low+high)/2

low=low+1

high=high-1

return median

# 15/15 Not sure why this doesn't work

**lbebels**#1

**abdsamad**#2

Try this one

def median(num):

n = len(num)

num = sorted(num)

if n%2 == 1:

m = n/2

#print m

s= num[m]

#print s

return s

else:

m = n/2

#print m

s = float ((num[m-1] + num[m]))/2

#print s

return s

num = [1, 2, 3, 4, 5]

median(num)

This works fine. Remember to indent

**pyted15**#3

This worked for me, see below But the bit I'm not getting is:

`mid = len(x) / 2`

When I test it with some print statements based on five elements "[5,4,3,2,1]". I get the mid point as 2. Its like its rounding down, i.e

mid = 5 / 2

mid = 2

I use mid as my index to the above list and get the answer 3

Why is this?

Is my code faulty or is this expected functionality?

Thanks,

Ed

```
def median(y):
x = sorted(y)
mid = len(x) / 2
if len(x) % 2 != 0:
#uneven number of elements
return x[mid]
else:
#even number of elements
dmid = mid - 1
result = float((x[dmid] + x[mid])) / 2
return result
```

5 / 2 = 2 because both 5 and 2 are integers. Therefore you get an integer as a result.

However, 5.0 / 2.0 = 2.5 This is because we are now dividing floats.

I hope that helps.