"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