関数から2つの変数を返すことに問題が出てきましたが、変数をグローバルに設定しています。私が作成しているプログラムは、ユーザーを追加してそのユーザーにログインする、またはユーザーのパスワードを変更するプロセスを模倣するように設計されています。関数の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
私は、エラーを受信し続ける:
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
私は、ユーザーを設定すると、私はこのエラーが表示されたログイン機能を実行するとき。返信しようとしています。
return(set_uname, set_pword)
ユーザー機能です。関数から変数を返す方法を理解していますが、このコードでは関数を呼び出せません。あなたは、関数から2つの変数を返すようにしようとしている
"変数をグローバルに設定しました" - あなたのプログラムは 'set_uname'と' set_pword'がグローバルであるとは言いません。 – khelwood
これはうまくいきました。変数をグローバルとして設定することなく、以前のような変数を返すことができました。 –
なぜ、 'set_uname'がグローバルスコープになると思いますか?また、あなたのトップレベルの 'global'指示文は完全に冗長です*あなたは既にグローバルスコープ*にあります。また、 'user'関数は値のペアを返しますが、呼び出しの結果を何か.... user(uname、pword)'に代入しないと破棄します。 –