I going through a python course and am stuck at trying to use a while loop properly in my code
My code is supposed to check a password if it has min length =6 and max length =14, it will also check if the password only has numbers or letters. If it has a combination of both its supposed to print "strong password" if it only has numbers or letters it will print "weak password".
MIN_PASSWORD_LENGTH = 6
MAX_PASSWORD_LENGTH = 14
while password_length >= MIN_PASSWORD_LENGTH or password_length <= MAX_PASSWORD_LENGTH:
password_length = len(password)
password = input("Enter your password: ")
if password.isalpha():
print("Your password is weak!")
elif password.isnumeric():
print("Your password is weak!")
else:
print("Your password is strong!")
print("Number of characters used in password: ", password_length,"the min length expected is: ",MIN_PASSWORD_LENGTH,
"the max length is: ", MAX_PASSWORD_LENGTH)
When I run my code, it comes with error message: 'name password_length is not defined'. I am not sure what to do? Is my code even correct? Am I supposed to put the password_length outside the while loop?
You have, more or less, the right idea. It's just that you need to assign a value to password_length outside your loop.
Think about this: when your code is run, the interpreter hits the while loop and attempts to make a comparison involving password_length. However, at that point password_length doesn't exist yet, since the first time it gets a value is inside the loop. Therefore, you should initialise it to a sensible value, such as 0, before entering the loop.
Two supplementary points:
You're calculating the password length of the previous password, so if you enter a too-short/long password and then an acceptable one, the length printed will be of the unacceptable one.
In general, prefer f-strings or str.format calls to string concatenation, so, for your print, this might be better:
print(f'Number of characters used in password: {password_length}; '
'the min length expected is {MIN_PASSWORD_LENGTH} and the '
'max length expected is {MAX_PASSWORD_LENGTH}.')
Immediately before the while loop, initialize with something like "password_length = MAX_PASSWORD_LENGTH" or else the while loop cannot start. The first line inside the while loop is "password_length = len(password)", which will set the value of password_length correctly, but the while loop needs something to start with so that you can reach that point.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With