Irmen de Jong
irmen at -nospam-remove-this-xs4all.nl
Thu Aug 5 14:06:47 CEST 2004
Nickolay Kolev wrote:
> I have however encountered a strange (for me anyway) scoping problem.
This has nothing to do with scoping.
> Here is my implementation of linear search as a method in a class, hence
> all the self's (self.sequence is the sorted sequence we are searching in
> and value is, well, the value we are searching for):
> def linearSearch(self, value, index = None):
> if not index:
> index = 0
> if self.sequence[index] == value:
> return index
> self.linearSearch(value, index + 1)
In this line, you don't return a value from the recursive call.
Change it to:
return self.linearSearch(value, index + 1)
> except IndexError:
> return -1
The algorithm should now work, although it is very inefficient.
Now, you're learning Python, so it's probably good to point
out that a containment test is usually done like so:
if value in sequence: ...
If you want to have the index:
idx = sequence.index(value)
And for quick (much quicker than linear) search in a sorted sequence,
have a look at the bisect module etc:
More information about the Python-list