Sean Novick <(E-Mail Removed)> wrote:
> First lookup:
> Traceback (most recent call last):
> File "F:\CSC113 Module 4 CA\sample database.py", line 72, in <module>
> class phonedb:
> File "F:\CSC113 Module 4 CA\sample database.py", line 146, in phonedb
> for entry in foo.lookup('reifsch'):
> File "F:\CSC113 Module 4 CA\sample database.py", line 101, in lookup
> if cmp(e, string) =3D=3D 0:
> TypeError: comparison did not return an int
> I do not know what this error means. I tried to look it up in help, but to no
> avail. If someone could please help or tell me where I could find an answer.
The 'cmp' function (which is depricated, by the way) asks the two
arguments to compare themselves. It does this by invoking the __cmp__
method on the first object, passing it the second. (Actually it's more
complicated than that, but it will do as a partial explanation for now).
The __cmp__ method is expected to return an integer, which represents
the results of doing the comparison (see the docs if you want to know
the values...but as I said cmp and __cmp__ a depricated).
So, whatever 'e' is (and we can't tell from the traceback, you'll have
to work through your code to figure it out, probably by sprinkling in
'print' statements), its __cmp__ method didn't return an integer.
When you fix this, I would recommend converting to using rich comparisons
(__eq__, __lt__), etc, since __cmp__ is eventually going away (it doesn't
exist in Python 3.x).