从函数python

时间:2017-07-20 07:57:34

标签: python python-3.x

我遇到了从函数返回两个变量的问题,尽管我已将变量设置为全局变量。我正在制作的程序旨在模仿添加用户并登录该用户或更改所述用户密码的过程。

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)

来自用户功能。我理解如何从函数中返回变量,就像我之前所做的那样,但是我不能让它在这段代码中工作。

1 个答案:

答案 0 :(得分:3)

您正尝试从函数中返回两个变量,例如:

def foo():
    a = 1
    b = 2
    return a,b

显然,如果我尝试从该功能外部访问ab,我将收到您所看到的相同错误,即NameError

为了返回值,我们可以在函数外部使用:

c = foo()
print (c)
# (1,2) which is a tuple

为了得到你返回的两个变量,只需在调用函数时使用两个变量:

a,b = foo()
print (a,b)
# 1 1
相关问题