2013-05-18 131 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 

不知道這是一個很好的解決方案