Best way to do this?

Mel Wilson mwilson at
Tue Jan 27 20:45:13 CET 2004

In article <40106D38.3010302 at>, sambo <sambo at> wrote:
>>The "obscure" for/else can help:
>>def get_password (prompt):
>>    for i in (1, 2, 3):
>>        password = raw_input (prompt)
>>        if password == 'mypass':
>>            return True
>>        else:
>>            print "Try Again"
>>    else:
>>        print "Too Bad"
>>        return False
>Obscure? at least it does something.

   Well, yeah, but I did put it in quotes.  It was some time
before I realized that else could go with for.  And a bit
longer before I got my head around what it did.

   In retrospect, I would say that for/else would have
looked its best in a code snippet, as presented by the
original poster.  "Cleaning up" the code into a function
meant that I could have ditched the "else" and just made the
next two statements the last in the function.  So:

    for i in (1, 2, 3):
        password = raw_input (prompt)
        if password == 'mypass':
            good_password = True
            print "Try Again"
        print "Too Bad"
        good_password = False
    if good_password:

>What is the advantage of the following assignment ( a few messages up)
>attempts, password = 3, 'mypass'
>Reading difficulty - at least 3 (no relation, hehe)

   No particular advantage I can imagine.  When two
variables are fated to be together throughout the algorithm,
then you can help express this with tuple unpacking.  The
serious reason for tuple unpacking is to make sure that all
the value calculations are done before you try the

        a, b = b, a

            v1, v2, v3 = f1(), f2(), f3()
        except some_exception:

which makes the assignments to the v's an all-or-nothing

        Regards.        Mel.

More information about the Python-list mailing list