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

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 3及以上版本

s = raw_input()

它将解决pycharm IDE上的问题 如果你正在解决的在线网站完全hackerrank然后使用:

s = input()

其他回答

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

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

如果您只想读取字符串,请尝试使用raw_input而不是input。

print("Enter your name: ")
x = raw_input()
print("Hello, "+x)

你应该使用raw_input,因为你使用的是python-2.7。当你在一个变量上使用input()时(例如:s = input('Name: ')),它将在Python环境上执行命令,而不保存你在变量上所写的内容,如果你所写的内容没有定义,则会创建一个错误。

raw_input()将正确保存你在变量上写的内容(例如:f = raw_input('Name: ')),并且它不会在Python环境中执行它而不会产生任何可能的错误:

input_variable = raw_input('Enter Your Name : ')
print("Your Name Is  : " + (input_variable))

下面是一个与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)

对于任何可能遇到这个问题的人来说,事实证明,即使您包含#!/usr/bin/env python3在脚本的开头,如果文件不可执行,shebang将被忽略。

要确定文件是否可执行:

在命令行中运行。/filename.py 如果-bash: ./filename.py: Permission denied,执行chmod a+x filename.py 重新运行。/filename.py

如果你已经包含了import sys;print(sys.version),就像Kevin建议的那样,你现在会看到脚本正在被python3解释