"NameError: name is not defined" for user input

"NameError: name is not defined" for user input

我是 python 的新手,并制作了一个简短的脚本来试用它们,但在尝试定义 uN 作为用户输入的 str 我得到:

Traceback (most recent call last):
  File "/home/pi/Desktop/Scripts/classTest/classTest1.py", line 14, in <module>
uN = input(str("Username"))
  File "<string>", line 1, in <module>
 NameError: name 'ben' is not defined

代码如下:

class user:
    def __init__(self, usrName, pWord):
        self.usrName = usrName
        self.pWord = pWord

    def createUsrPw(self):
        f = open("usrName.txt", "a")
        f.write(self.usrName)
        f.write("   ")
        f.write(self.pWord)
        f.write("\n")
        f.close()

uN = input(str("Username"))
pW = input(str("Password"))

usr1 = user(uN, pW)

usr1.createUsrPw()

我以前经常使用 x = input(str()) 语法,从来没有出现过这个错误,错误追溯到第 1 行,所以 uN = input(str("Username")) 仍然被认为是 [=30 的一部分=]?

当我将代码简化为这样时,它完美地工作:

class user:
    def __init__(self, usrName, pWord):
        self.usrName = usrName
        self.pWord = pWord

    def createUsrPw(self):
        f = open("usrName.txt", "a")
        f.write(usrName)
        f.write("   ")
        f.write(pWord)
        f.write("\n")
        f.close()


usr1 = user("Ben", "testPw")

usr1.createUsrPw()

附加文件 usrName.txt 以按预期包含 "Ben testPw"。

使用raw_input。这看起来像 Python 2 错误,我认为您没有使用 Python 3

您也不需要对字符串文字调用 str。海峡("asdf")=="asdf"

您应该使用 raw_input 而不是 input,因为您正在使用 Python 2.X。 input 在 Python 中工作 3.

此代码可以工作:

class user:
    def __init__(self, usrName, pWord):
        self.usrName = usrName
        self.pWord = pWord

    def createUsrPw(self):
        f = open("usrName.txt", "a")
        f.write(self.usrName)
        f.write("   ")
        f.write(self.pWord)
        f.write("\n")
        f.close()

uN = raw_input("Username")
pW = raw_input("Password")

usr1 = user(uN, pW)

usr1.createUsrPw()