我遇到了从函数返回两个变量的问题,尽管我已将变量设置为全局变量。我正在制作的程序旨在模仿添加用户并登录该用户或更改所述用户密码的过程。
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
我一直收到错误:
追踪(最近一次通话): 文件“C:\ Users \ tay.swain \ Documents \ Login.py”,第54行,in uname = set_uname NameError:名称'set_uname'未定义
设置用户后,当我运行登录功能时,会出现此错误。我想回来了
return(set_uname,set_pword)
来自用户功能。我理解如何从函数中返回变量,就像我之前所做的那样,但是我不能让它在这段代码中工作。
答案 0 :(得分:3)
您正尝试从函数中返回两个变量,例如:
def foo():
a = 1
b = 2
return a,b
显然,如果我尝试从该功能外部访问a
或b
,我将收到您所看到的相同错误,即NameError
。
为了返回值,我们可以在函数外部使用:
c = foo()
print (c)
# (1,2) which is a tuple
为了得到你返回的两个变量,只需在调用函数时使用两个变量:
a,b = foo()
print (a,b)
# 1 1