2013-05-18 85 views
2

我有字符串变量测试,在Python 2.7中,这工作正常。python 3输入字符串3

test = raw_input("enter the test") print test 

但是在Python 3.3中。我用

test = input("enter the test") print test 

与输入字符串sdas,我得到一个错误信息

Traceback (most recent call last): File "/home/ananiev/PycharmProjects/PigLatin/main.py", line 5, in test = input("enter the test") File "", line 1, in NameError: name 'sdas' is not defined

回答

2

我说你需要的代码是:

test = input("enter the test") 
print(test) 

否则它不应该由于语法错误,完全可以运行。 print函数需要python 3中的括号。不过,我不能重现你的错误。你确定这是导致这个错误的行吗?

8

您正在使用Python 2解释器运行您的Python 3代码。如果你不是,你的print声明会在它提示你输入之前发出SyntaxError

结果是,您使用的是Python 2的input,它尝试输入eval(推测为sdas),发现它是无效的Python,并且死亡。

0

sdas正在被读作变量。要输入一个字符串,你需要“”

+0

你确定吗?据我了解,OP希望zu传递一个定义的变量,以便脚本确实评估该变量。 – reporter

+0

你能详细说说你想说什么吗?如果你提供代码片段会更好? –

-1

我有同样的问题, Python 3似乎不支持raw_input(),而是input()是你可以用来获取输入的东西。但是,如果你试图输入一个字符串,它评估输入()和结果是NameError 我想出了以下解决方案

def getinput(): 
    try: 
     x = input() 
    except NameError as e: 
     for pname, pvalue in vars(e).iteritems(): 
      print((pname, ": ", pvalue)) 
     error_string = str(e) 
     x = error_string[error_string.index('\'') + 1: error_string.rfind('\'')] 
    return x 

不知道这是一个很好的解决方案