Sean Novick <daddysea...@yahoo.com> 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. > Thanks.
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). --RDM -- http://mail.python.org/mailman/listinfo/python-list