# What is wrong with my code? Median

#1

Median exercise

It points to some syntax error but i can't find it. Line 5 it says.

``````def median (a):
a.sort()
if len(a)%2==0:
return ((a[(len(a))/2.0]+a[(len(a))/2.0-1])
else:
return a[len(a)/2]``````

#3

The error is pointed out on line 5 but is actually in line 4. Count the `(`'s, 6. Count the `)`'s, 5. A number of those brackets are not needed.

``(a[len(a)/2.0]+a[len(a)/2.0-1])``

This brings up a tiny issue with repetition. `len(a)/2` appears three times, suggesting a temporary variable might be helpful. Note that you have not divided that sum by 2.

``n = len(a)``

Implicitly massaging a number to a float by dividing by 2.0 is not as useful as it might appear. Explicit declarations are preferred since there is no ambiguity.

``````m = int(n/2)
if n % 2: return a[m]
return float(a[m-1] + a[m]) / 2``````

Python 2 lets us get away with expecting an integer result when dividing integers. Python 3 does not. Just like floats, explicit integer declarations leave no doubt in the reader's mind. Something to keep in mind as we migrate to Python 3.

#4

Thank you for the tips and solve!

#5

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