gpt4 book ai didi

python - If 语句定义时出错。 (Python)

转载 作者:行者123 更新时间:2023-12-01 02:49:08 25 4
gpt4 key购买 nike

所以我对编码和 Python 非常了解。我以前好多了,但有一段时间没有使用它了,我正在努力恢复正常状态。我正在尝试执行一个 If 语句,其中要求输入用户名和密码,如果正确,则进入“定义”,我认为它被调用,然后执行 def access()< 中的代码/strong>

代码:

def main():

userName = ("u123")
userPass = ("p123")

userNameInput = input("Username: ")
userPassInput = input("Password: ")

if userPassInput == userPass and userNameInput == userName:
print("Access granted")
access()

else:
print("Access denied")
return main()

def access():

print("Welcome, " + userName)

access()

main()

但是,当执行正确的输入时,我收到此错误:

Username: u123
Password: p123
Access granted
Traceback (most recent call last):
File "C:/Users/Tom/Desktop/test.py", line 23, in <module>
main()
File "C:/Users/Tom/Desktop/test.py", line 11, in main
access()
UnboundLocalError: local variable 'access' referenced before assignment
>>>

如有任何帮助,我们将不胜感激,谢谢。

最佳答案

您试图在声明之前调用 access()!这是因为定义 access() 的代码放置在其声明之后,因此您的代码本质上是在尝试查找(尚)不存在的函数!这是scoping issue ,并且相当常见!

下面的代码(通过将 access() 的定义放在 main() 之外)有效:

def main():

userName = ("u123")
userPass = ("p123")

userNameInput = input("Username: ")
userPassInput = input("Password: ")

if userPassInput == userPass and userNameInput == userName:
print("Access granted")
access(userName)

else:
print("Access denied")
return main()

def access(userName):
print("Welcome, " + userName)

main()

我也不认为建议在函数中定义函数(对于此类项目),而是可以创建一个内部包含各种函数的类:

class Login:
def __init__(self):
self.users = {}
self.userName = ("u123")
self.userPass = ("p123")

def addUser(self, uname, upass):
self.users[uname] = upass;

def login(self):
userNameInput = input("Username: ")
userPassInput = input("Password: ")
if userNameInput in self.users:
if self.users[userNameInput] == userPassInput:
print("Access granted")
self.access(userNameInput)
else:
print("Access denied")
return self.login()
else:
print("Access denied")
return self.login()

def access(self, username):
print("Welcome, "+username+"!")


def main():
mylogin = Login()
mylogin.addUser("u123","p123")
mylogin.login()

main()

展望 future ,您将必须实现某种安全性(上面的代码没有!所以请确保不要将其用于重要的事情。不要使用用户和密码的字典,这只是为了展示!)。

希望它能帮助您重新燃起对 Python 的热爱!

关于python - If 语句定义时出错。 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44990935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com