当我试图运行这个简单的脚本时,我得到一个错误:

input_variable = input("Enter your name: ")
print("your name is" + input_variable)

假设我输入“dude”,我得到的错误是:

  line 1, in <module>
    input_variable = input("Enter your name: ")
  File "<string>", line 1, in <module>
NameError: name 'dude' is not defined

我运行的是Mac OS X 10.9.1,我使用的是Python 3.3安装时附带的Python Launcher应用程序来运行脚本。


当前回答

我在使用一个应该兼容python 2.7和3.7的模块时也遇到了这个问题

我发现解决这个问题的方法是导入:

from six.moves import input

这修复了两个解释器的可用性

你可以在这里阅读更多关于六图书馆的信息

其他回答

您正在运行Python 2,而不是Python 3。为了在Python 2中工作,使用raw_input。

input_variable = raw_input ("Enter your name: ")
print ("your name is" + input_variable)
input_variable = input ("Enter your name: ")
print ("your name is" + input_variable)

输入时必须使用单引号或双引号

Ex:'dude' -> correct

    dude -> not correct

如果你已经下载了python3,你可以改变你在IDE中使用的python。X,转换起来应该不难。但是你的脚本在python3上运行良好。x,我只需要改变

print ("your name is" + input_variable)

to

print ("your name is", input_variable)

因为用逗号打印时,你的名字和用户输入的东西之间会有空格。AND:如果你使用2.7,只需使用raw_input而不是input。

下面是一个与Python 2.7和Python 3+兼容的输入函数: (稍微修改了@Hardian的回答)以避免UnboundLocalError:在赋值错误之前引用本地变量“input”

def input_compatible(prompt=None):
    try:
        input_func = raw_input
    except NameError:
        input_func = input
    return input_func(prompt)

这里还有另一个没有try块的选项:

def input_compatible(prompt=None):
    input_func = raw_input if "raw_input" in __builtins__.__dict__ else input
    return input_func(prompt)

我们正在使用以下代码,python 2和python 3都可以使用

#Works in Python 2 and 3:
try: input = raw_input
except NameError: pass
print(input("Enter your name: "))