字典引用不断抛出未解决的引用



我正在使用python构建一个模拟终端式程序,并试图为它构建一个登录系统。

经过多次修订后,我的目录设置最终看起来像这样:

pythonapp-harlker/
__init__.py
loginCheck.py
main.py
userlist.py

__init__.py是空的,main.py的主代码块如下所示:

from loginCheck import *
loginFunc = Login()
loginFunc.login()
if loginFunc.login().checkPass == True:
print("Welcome %s!" % (username))

导入loginCheck没有返回错误,所以很自然地,我查看了loginCheck.py.

import sys, platform, importlib
import hashlib
from userlist import *
class Login:
def login(self):
username = input("Username: ")
password = input("Password: ")
password = str.encode(password)
password = str(hashlib.md5(password).hexdigest())
if username in users:
userPassAndIndex = users.get(username)
if password == userPassAndIndex[0]:
checkPass = True
value = userPassAndIndex[1]
else:
self.login()
else:
self.login()

看着调试器,它一直告诉我loginCheck.py无法从userlist.py导入字典。

userlist.py

users = {
'localAdmin10': ["086e717a4524329da24ab80e0a9255e2", 0],
'orlovm': ["505ec2b430fa182974ae44ede95ca180", 1],
'testUser10': ["90e611f269e75ec5c86694f900e7c594", 2],
'torradiRemote': ["0b841ebf6393adac25950a215aecc3d1", 3],
}

此外,在运行 python 代码(来自main.py)时,代码似乎无法检测输入的用户名和密码是否正确。

我已经查看了大量的stackOverflow页面和外部资源,但我现在处于一种"程序员的障碍"。

你的代码在 Python 3+ 上运行良好,在 Python 2.7 上运行良好,让我解释一下原因:

  • 你想在Python 2.7中使用的输入函数是raw_input,而不是input。Python 2.7 中的input函数将用户输入作为 Python 表达式进行评估,因此在您的情况下,找不到它并发送异常
  • raw_input在启动Python 3.0input更名为

总而言之,你只需要根据你想使用的Python版本来选择正确的函数。raw_input适用于 Python 2.7,input适用于 Python 3。

最新更新