Ich habe ein Problem mit der Rückgabe von zwei Variablen aus einer Funktion, obwohl ich die Variablen als global festgelegt haben. Das Programm, das ich mache, ist so konzipiert, dass es den Prozess des Hinzufügens eines Benutzers und des Anmeldens zu diesem Benutzer oder das Ändern des Benutzerkennworts imitiert.Rückgabe von Variablen aus Funktionen python
check = False
global uname
global pword
uname = 0
pword = 0
while check == False:
def user(uname, pword):
set_uname = input("Enter username: ")
set_pword = input("Enter password: ")
print("Username and Password set")
return(set_uname, set_pword)
def login(uname, pword):
correct = False
while correct == False:
enter_uname = input("Enter username: ")
enter_pword = input("Enter password: ")
if enter_uname == uname and enter_pword == pword:
print("Login successful")
elif enter_uname != uname or enter_pword != pword:
print("Incorrect username or password")
correct = False
def cpword(pword):
done = False
while done == False:
check_pword = input("Enter current password: ")
if check_pword == pword:
new_pword = input("Enter new password: ")
if new_pword == pword:
print("New password cannot be old password")
done = False
elif new_pword != pword:
print("Password successfully changed")
pword = new_pword
done = True
return(pword)
elif check_pword != pword:
print("Incorrect password")
done = False
print("Enter User")
user(uname, pword)
uname = set_uname
pword = set_pword
print("Login = 1")
print("Change Password = 2")
choice = int(input("Enter function: "))
if choice == 1:
login(uname, pword)
elif choice == 2:
cpword(pword)
pword = pword
ich immer erhalte die Fehlermeldung:
Traceback (most recent call last): File "C:\Users\tay.swain\Documents\Login.py", line 54, in uname = set_uname NameError: name 'set_uname' is not defined
Sobald ich den Benutzer festgelegt, wenn ich die Login-Funktion dieser Fehler auftritt laufen. Ich versuche,
von der Benutzerfunktion zurückzugeben. Ich verstehe, wie man Variable von einer Funktion zurückgibt, wie ich es vorher getan habe, aber ich kann es nicht in diesem Code arbeiten lassen.
"Ich habe die Variablen auf global festgelegt" <- Ihr Programm sagt nicht, dass 'set_uname' und' set_pword' global sind. – khelwood
Das hat funktioniert, ich habe es geschafft, Variablen wie diese vorher ohne die Variable als global –
zurückgeben Warum, genau, erwarten Sie 'set_uname' im globalen Geltungsbereich zu sein? Und Ihre 'globalen' Anweisungen am oberen Rand Ihres Skripts * sind völlig redundant *, Sie sind * bereits im globalen Bereich *. Außerdem gibt die 'user'-Funktion ein Wertepaar zurück, aber Sie verwerfen sie einfach, wenn Sie das Ergebnis des Aufrufs nichts zuweisen ....' user (uname, pword) '. –