What's wrong with this code?


#1


#2

The sum of two integers may possibly be odd parity, which when divided by 2 will be rounded down in Python 2 since integer division gives an integer quotient.

Try,

return float(inputlist[q] + inputlist[r]) / 2

Aside

To get a count of the number of elements in a list we have the len() function.

n = len(inputlist)

By reassigning the sorted list to the same variable you are effectively changing the global object (the list outside of the function, if it exists), which is the same as,

inputlist.sort()

Safer for all practical purposes if we leave the global object unchanged, and only sort the local copy.

s = sorted(inputlist)

The midpoint in the list is the same for both odd and even parity, only the even parity has two midpoints.

m = int(n / 2)

For even parity, the midpoints are,

s[m - 1] and s[m]

There is enough information above to determine the median, without introducing a whole bunch of code.

if n % 2:
    return s[m]
else:
    return float(s[m - 1] + s[m]) / 2

#3

why isn’ t it printing ‘p’ = (count + 1) / 2?
also if you see that conditon where q and r are involved , it will always give out even num.


#4

Please explain your code for us so we can better understand the logic. Very little of it makes any sense to me.

  1. Why do we need to run sorted() inside the loop?
  2. Why do we need to return count on line 10?
  3. Why are the print statements after the return statements?

Can you prove that?


#5

problem solved . thank you, I should’nt have returned the statement else everything else is right.


#6

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