2010-06-14 119 views
3

我正在學習python。它在此腳本中給出了語法錯誤。我無法弄清楚。Python中的語法錯誤:

import exceptions 
class FOUND(Exception): pass 

x = [1,2,3,4,56,73,29,35,12,32,63,12,76,75,89] 


while True: 

    try: 
     test = int(raw_input('Enter integer to be checked in list:')) 
     count = -1 
     for y in x: 
      count += 1 
      if y == test: 
       raise FOUND 
    except ValueError as e: 
     print "Not a valid integer (%s)"%(e) 
    except FOUND: 
     print "Found (%d) at (%d)"%(test,count) 
    else: 
     print "Not found ,Appending (%d) to list at location (%d)"%(test,count+1) 
     x.append(test) 
    finally: 
     print "The List:" 
     print x 
     print " " 

無效的語法&它強調在這一行右雙引號:print "Not a valid integer (%s)"%(e)

+0

什麼是錯誤? – Salil 2010-06-14 12:02:08

+0

您正在使用python-2.x代碼和py3k解釋器。而且,改變這樣的問題使得已經回答的人看起來像完全白癡。 – SilentGhost 2010-06-14 12:15:18

+0

我正在使用py3k解釋器 – pecker 2010-06-14 12:16:21

回答

1

您需要class ...x = ...

+0

語法無效,它在這一行中突出顯示逗號:'除ValueError,e:' – pecker 2010-06-14 12:06:05

+1

當剪切並粘貼到Python文件中時,該腳本在那裏沒有空行。如果您將其輸入到交互式提示中,則會需要一個空行。 – 2010-06-14 12:07:18

2

之間的空行嘗試except ValueError as e:,您使用較舊的語法是在Python無效3.

+0

現在它再次拋出無效的語法,但突出顯示'print'的結束報價不是有效的整數(%d)「%(e)' – pecker 2010-06-14 12:10:03

+0

@pecker:您正在使用python-2.x代碼和py3k解釋器。我可以知道在修復這個錯誤之後會拋出哪個錯誤。 – SilentGhost 2010-06-14 12:13:08

+0

如果你真的使用python 3,那麼'print'是一個函數,需要像print [「不是有效的整數(%d)」%e)'或者更好的方式調用'print(「不是一個有效的整數(「,int(e),」)「)'(不知道%語法是否仍然在py3k中有效) – 2010-06-14 12:15:18

1

你的代碼(剪切和粘貼,沒有改動)適合我(Python 2.5)。

順便說一句,你的test = int ...行應該在try(和適當縮進)之後,並且「非有效整數(%d)」中的%d應該是%s。

針對Python 3的異常處理語法已經更改:確保您所遵循的任何幫助/教程都是針對您已安裝的相同主要版本的Python。從2.x到3.x有了顯着的變化。

5

print沒有括號就是來自python 2,如果你使用的是python 3,你需要使用print()

您無法格式化異常,因爲%d - %d用於整數。