2015-03-03 58 views
1

我已經爲我的組項目寫了一個返回函數。 我使用python 3.4和寫這:input()會導致意外的EOF語法錯誤

def readrouter(x, y): 
     conn = sqlite3.connect('server.db') 
     cur = conn.cursor() 
     cur.execute("SELECT DISTINCT command FROM router WHERE 
        function =? or type = ? ORDER BY key ASC",(x, y)) 
     read = cur.fetchall() 
     return read; 

a = input("x:") 
b = input("y:") 
for result in readrouter(a,b): 
    print (result[0]) 

由於我的主要成員是使用2.7和我現在需要按照他的版本。 後,我重新輸入我的.py爲蟒蛇2.7 有一個錯誤:

x:create vlan 
Traceback (most recent call last): 
    File "C:/Users/f0449492/Desktop/2015225/database.py", line 322, in <module> 
    a = input("x") 
    File "<string>", line 1 
    create vlan 
      ^
SyntaxError: unexpected EOF while parsing 

Process finished with exit code 1 

如何修復這個bug?

回答

2

在Python 2.7中,用raw_input()替換input()

前者在輸入字符串上運行eval(),並期望有效的Python代碼作爲輸入。您的輸入create vlan是無效的Python,無法評估。後者只是返回一個沒有進一步處理的字符串。

+0

Omg,謝謝,但我不應該問這個愚蠢的問題 – 2015-03-03 08:04:29

+1

沒關係,你可能不是第一個絆倒這個的人。在野外有這個答案,至少會減少其他人經歷相同事情的機率:) – icedwater 2015-03-03 08:05:59

0

作爲後續工作 - 爲確保與兩個Python分支的兼容性,您可以使用six