2010-06-14 79 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用于整数。