For future reference, here is a hint as to how to debug problems like this, and a cleaner way to write the code.
Seymore4Head wrote: > On Sat, 30 Aug 2014 13:48:09 -0500, Tim Chase > <python.l...@tim.thechases.com> wrote: >>> if e[0].isupper == False: >>> print ("False") >>> if e[0].isupper == True: >>> print ("True") [...] >>There's a difference between e[0].isupper which refers to the method >>itself, and e[0].isupper() which then calls that method. Call the >>method, and you should be good to go. > > That works. > Thanks We've all done it. I think that anyone who tells you they've never forgotten the brackets on a zero-argument function call is probably lying :-) And the worst thing is that you can stare and stare and stare at the code for a week and not see what's wrong. Here are two suggestions for debugging difficult problems like this: - Take a break, and look at it with fresh eyes. E.g. work on something else for an hour or three, or go and have lunch. - Use print() to see the intermediate results: a = e[0].isupper print(e[0], a, a == False, a == True) You expect to see something like: T True False True but when you see: T <built-in method isupper of str object at 0xb7d44820> False False at least you will know *what* is going on, even if you're unsure of *why*. Now, here is a better way to write your code. Since isupper() returns True or False, there is no need to compare to True or False to get a boolean value. It's already a boolean value! So we can write: if not e[0].isupper(): print("False") if e[0].isupper(): print("True") or better still: if e[0].isupper(): print("initial letter is upper case") else: print("initial letter is lower case") (More descriptive messages are better than cryptic messages.) -- Steven -- https://mail.python.org/mailman/listinfo/python-list