如何调用存储在Python中的变量mh中的函数

2024-04-20 16:19:54 发布

您现在位置:Python中文网/ 问答频道 /正文

下面您可以看到,当我试图调用存储在变量中的mainLogin()函数时,它表示尚未定义该函数。你知道吗

我知道有办法,但似乎想不出来。你知道吗

validUser = {}
answer = ""

answer = mainLogin()

def mainLogin():
    while True:
        print("Are you currently a registered user [y/n]: ")
        answer = input().lower()
        if answer in "y n".split():
            return answer
        else:
            print("Error: please enter [y/n].")

def Login(answer):
    if answer == "y":
        while True:
            askUsername = input("ENTER USERNAME: ")
            askPassword = input("ENTER PASSWORD: ")
            if len(askUsername) > 0 and askUsername.isalpha():
                if askUsername in validUser and valid[askUsername] == askPassword:
                    print("\nLogin Success!\n")
                    break
                else:
                    print("Error: Incorrect username or password!")
            else:
                print("Error: Don't be silly!")
    elif answer == "n":
        while True:
            createUsername = input("ENTER NEW USERNAME: ")
            if len(createUsername) > 0 and createUsername.isalpha():
                if createrUsername in validUser:
                    print("Meesage: username already exists.")
                else:
                    createPassword = input("ENTER NEW PASSWORD: ")
                    if len(createPassword) > 0 and createPasssword.isalpha():
                        validUser[createUsername] == createPassword
                        print("\nUSER CREATED\n")
                    else:
                        print("Error: Please choose a different password.")
            else:
                print("Error: Don't be silly!")
    else:
        print("Error: You have not entered [y/n]")

Tags: andanswerintrueinputiferrorelse
2条回答

不能将未定义的函数赋给变量,先定义函数,然后再赋给变量。像这样:

def mainLogin():
    while True:
        print("Are you currently a registered user [y/n]: ")
        answer = input().lower()
        if answer in "y n".split():
            return answer
        else:
            print("Error: please enter [y/n].")

answer = mainLogin()

answer = mainLogin()放在文件的底部。你知道吗

下面的函数尚未被python注册。 Python将一行一行地运行您的脚本/模块。当您在模块的根目录中有代码时,它将被执行。你知道吗

要解决此问题,还可以执行以下操作:

def main():
    answer = mainLogin()

def mainLogin():
    # code

if __name__ = "__main__":
    main()

在这里,python将在我们开始任何工作之前从上到下检查整个文件。这是解决问题的标准方法。你知道吗

__name__是模块的名称。如果我们特别使用python命令启动模块,那么它将被分配名称__main__python script.py。如果我们从另一个脚本导入模块,__name__将包含模块的实际名称,因此main()将不会被调用。你知道吗

相关问题 更多 >