Median


#1



https://www.codecademy.com/courses/python-intermediate-en-rCQKw/2/5?curriculum_id=4f89dab3d788890003000096


I'm always .5 off with my final answer. Where am I not correctly making my number an integer?


In the example [4,5,5,4] I expect 4.5, but it produces 4


mylist = [1,1,2]
def median(mylist):
    mylist = sorted(mylist)
    listlength = len(mylist)
    if listlength % 2 == 0:
        return (mylist[int(listlength/2 + .5)] + mylist[int(listlength/2 - .5)]) / 2
    else:
        return mylist[int(listlength/2 + .5)]


#2

if the division involves two integers python will round the number down, make sure you involve a float in the division so the number isn't rounded down to a integer


#3

Got it. I ended up going with the Band-Aid solution of always adding +.5 to the variable at the end, which works... but didn't explain to me what was going on. Thanks.


#4

That really is a band aid solution, look:

print 9 / 2 # 4
print 9 / 2.0 # 4.5

see the difference? If there are two integers, python will round down to a integer, if there is a float involved, it won't happen. Try to implement this without doing +.5


#5

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.