namespace issue?

Michael Powe looie+gnus at aracnet.com
Thu Jun 21 18:03:48 EDT 2001


>>>>> "Christopher" == Christopher A Craig <com-nospam at ccraig.org> writes:

    Christopher> Michael Powe <michael+gnus at trollope.org> writes:
    >> >>> def GetNum2(): ...  AC = raw_input("Area Code: ") ...  PN =
    >> raw_input("Phone Number: ") ... if not PN : PN = '000-0000'
    >> ... if not AC : AC = '503' ... if len(PN) < 8 and not
    >> string.find(PN,'-'): ...  Ph = PN[:3] + '-' + PN[3:] ... return
    >> Ph

    Christopher>   string.find(PN, '-') succeeds (since PN contains a
    Christopher> '-'), so len(PN)<8 and not string.find(PN,'-')
    Christopher> returns false, meaning that Ph = PN[:3] + '-' +
    Christopher> PN[3:] is never executed, and Ph is not defined when
    Christopher> the return statement is reached.

Actually, it doesn't contain the dash.  The dash is only inserted if I
press the enter key, leaving the PN string empty.  In the case of an
empty string, the default string of zeroes is put into the variable.
But, the error persists even if I take that conditional out.  However,
you pointed me in the right direction.  The 'not string.find(PN, '-')'
part of the conditional is returning false when there is no dash in
the string.  If I take that part of the conditional out, and just use
the first part, it works as designed.

So now the question is, 'why'?  Am I misusing the string.find()
function? Okay, string.find() returns -1 when the string is not found,
which would seem to be what I expected, a false result.  Maybe python
doesn't treat -1 as false?  Well, I'll try being explicit and testing
for -1 return.  I probably have just confused myself hopelessly.

Thanks for the ... clue.  I saw a great line in an email today  -- "Is
that the clue phone ringing?  I think it's for you."  And I think I'll
go answer it.

    Christopher> So, yes, it is because of the conditional, but no it
    Christopher> has nothing to do with namespaces.  (unlike in C or
    Christopher> C++, in Python not all blocks get their own
    Christopher> namespaces, only functions, modules, and classes (and
    Christopher> probably something I forgot))

    Christopher> Also, yes, raw_input returns a string.

Okay, thanks.  

mp

-- 
			     Michael Powe
	      looie at aracnet.com     michael at trollope.org
	  "All we are basically are monkeys with car keys."
			 -- Northern Exposure



More information about the Python-list mailing list