下面您可以看到,当我尝试调用存储在变量中的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]")
答案 0 :(得分:1)
将answer = mainLogin()
放在文件的底部。
以下函数尚未由python注册。 Python将逐行思考您的脚本/模块。当您在模块的根目录中有代码时,它将被执行。
要解决此问题,您还可以执行以下操作:
def main():
answer = mainLogin()
def mainLogin():
# code
if __name__ = "__main__":
main()
在我们开始做任何工作之前,python将从上到下检查整个文件。这是解决问题的标准方法。
__name__
是模块的名称。如果我们使用python命令专门启动模块,将为其分配名称__main__
。 python script.py
。如果我们从另一个脚本导入模块,__name__
将包含模块的实际名称,因此不会调用main()
。
答案 1 :(得分:0)
您不能将未定义的函数分配给变量,首先定义函数,然后将其分配给变量。像这样:
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()