Basic question from pure beginner
sato.photo at gmail.com
sato.photo at gmail.com
Wed Jul 1 03:58:27 EDT 2009
Thank you for all of the help. With your assistance and help from the
Python Tutor mailing list I was able to come up with the following
code:
password = "qwerty"
correct_password_given = False
guess = "0"
count = 0
while count != 3 and not correct_password_given :
guess = raw_input("Enter your password: ")
guess = str(guess)
if guess != password:
print "Access Denied"
count = count + 1
else:
print "Password Confirmed"
correct_password_given = True
If I understand it correctly, the function will continue to loop until
either the count == 3 or until correct_password_give = True,
satisfying the two conditions of the assignment, which were to lock a
user out after three failed password attempts and to print "Access
Granted" and end the module if the correct password is given. Am I
understanding this correctly?
Thanks!
On Jul 1, 12:06 am, alex23 <wuwe... at gmail.com> wrote:
> On Jul 1, 3:38 pm, "sato.ph... at gmail.com" <sato.ph... at gmail.com>
> wrote:
>
> > I have been able to make the module quit after entering a password
> > three times, but can't get it to quit right away after the correct one
> > is entered.
>
> Not with the code you pasted, you haven't. There's a missing colon on
> line 7 & line 9 isn't indented properly. It's always best if we're
> referring to the same source when trying to help with a problem.
>
> The problem you're having, though, has to do with the while loop and
> the fact that it's only checking one condition: has the 'count'
> counter been incremented to 3. What you need to do is _also_ check for
> the success condition:
>
> is_confirmed = False
> while count != 3 or is_confirmed:
> guess = raw_input("Enter your password: ")
> guess = str(guess)
> if guess != password:
> print "Access Denied"
> count = count + 1
> else:
> print "Password Confirmed"
> is_confirmed = True
>
> This also provides you with a nice boolean that shows whether or not
> the password was confirmed, which may be useful for latter code.
>
> However, whenever you want to loop a set number of times, it's usually
> better to use a 'for' loop instead:
>
> PASSWORD = 'qwerty'
> MAXRETRY = 3
> for attempt in xrange(MAXRETRY):
> guess = str(raw_input('Enter your password: '))
> is_complete = guess == PASSWORD
> if is_complete:
> print 'Password confirmed'
> break # this exits the for loop
> else:
> print 'Access denied: attempt %s of %s' % (attempt+1, MAXRETRY)
>
> This saves you from the burden of creating, incrementing & testing
> your own counter.
>
> If there's anything here that isn't clear, please don't hesitate to
> ask.
More information about the Python-list
mailing list