"James Reynolds" <eire1...@gmail.com> wrote

This thread inspired me to start learning object oriented as well, but it
seems I must be missing something fundamental.

No, this has nothing to do with objects, its just a broken algorithm.

   median = Statistics.stats.median(*a)
   n = (self.value[m] + self.value[m+1]) / 2
IndexError: tuple index out of range

def median(self, *value_list):
     if len(self.value) % 2 == 1:
          m = (len(self.value) - 1)/2
          n = self.value[m+1]
     else:
          m = len(self.value) / 2
          m = int(m)
          n = (self.value[m] + self.value[m+1]) / 2
     return n

Consider the case where the length of value is 2.
We will use the else part of the branch.
m will have value 1
The highest index is 1 because indexes start at zero
so value[m+1] will fail with an index error.

A similar error will happen when the list has only 1 entry
since the highest index there will be zero.

You need to rethink your rules for generating the indexes
remembering that they start at zero.


--
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to