Basic question from pure beginner
alex23
wuwei23 at gmail.com
Wed Jul 1 03:06:38 EDT 2009
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