With this code (I added some prints to test where the code stops) I get this:
do you have your details stored here already? y/n y
Please enter a username Test
debug: username_exists is True
debug: I ran this command
do you have your details stored here already? y/n
import hashlib
import time
while True:
have_account = input("do you have your details stored here already? y/n ")
while have_account not in ("y", "n"):
print("please type either y or n")
have_account = input("y/n ")
if have_account == "y":
username_exists = False
while username_exists is False:
username_login = input("Please enter a username ")
with open("users.txt", "r") as f:
readfile = f.read()
if username_login in readfile:
username_exists = True
print("debug: username_exists is " + str(username_exists))
else:
username_exists = False
print("That user does not exist")
print("debug: I ran this command")
with open("users.txt", "r") as f:
readfile = f.read()
user_loc = readfile.index(username_login)
user_len = len(username_login)
f.seek(user_loc + user_len + 3)
pass_hash = f.read(64)
password_login_hashed = None
pass_matches = None
while pass_matches is False:
password_login = input("Please enter your password ")
password_login_hashed = hashlib.sha256(password_login.encode('utf-8')).hexdigest()
password_login = None
if password_login_hashed == pass_hash:
pass_matches = True
print("Congrats! You logged in!")
else:
pass_matches = False
quit_question = input("Incorrect password! Please try again or type "quit" to quit")
if quit_question == "quit":
quit()
Advertisement
Answer
You’re initializing pass_matches to None and then you’re checking pass_matches is False which will always return False because here pass_matches will always be None
modify the while statement with this line of code:
while pass_matches in (False, None)