使用输入的 NameError - Python 2.7

NameError Using Input - Python 2.7

我制作了一个脚本来检查变量是否与输入变量相同:

def password():
    userPassword = str(input("Type Your Password: "))
    if userPassword == storedPassword:
        print 'Access Granted'
    else:
        print 'Access Denied'
        password()

然而,每当我为输入键入一个字母时,它都会抛出一个 NameError,但它可以很好地处理数字。

错误:

Traceback (most recent call last):
  File "C:\Users\***\Desktop\Test\Script.py", line 16, in <module>
    password()
  File "C:\Users\***\Desktop\Test\Script.py", line 9, in password
    userPassword = str(input("Type Your Password: "))
  File "<string>", line 1, in <module>
NameError: name 'f' is not defined

对于Python 2.7你需要使用raw_input()而不是input()input()实际上将输入计算为Python代码。 raw_input() returns 用户输入的逐字字符串。

参见Python 2.7 获取用户输入并作为不带引号的字符串进行操作

您需要在 python 上使用 raw_input 而不是 input 2.

使用 input 尝试评估您传递的任何内容。在整数的情况下,它只是解析为该整数。在字符串的情况下,它会尝试查找该变量名称并导致您的错误。

您可以通过输入 'password'(例如密码)来确认这一点,这样您的输入调用 return 将引用您的 password 函数。

相反,raw_input 始终是 return 包含用户键入的字符的字符串。从您尝试将用户键入的任何内容转换回字符串的尝试来看,这正是您想要的。

userPassword = raw_input("Type Your Password: ")