2010-06-14 4 views
3

J'apprends le python. Il donne une erreur de syntaxe dans ce script. Je suis incapable de comprendre.erreur de syntaxe en 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 " " 

Syntaxe incorrecte & il met en évidence la fermeture guillemet dans cette ligne: print "Not a valid integer (%s)"%(e)

+0

Quelle est l'erreur? – Salil

+0

vous utilisez le code python-2.x avec un interpréteur py3k. De plus, changer une question comme celle-ci fait ressembler les gens qui ont déjà répondu à des idiots complets. – SilentGhost

+0

J'utilise l'interpréteur py3k – pecker

Répondre

1

Vous avez besoin d'une ligne vide entre les class ... et x = ...

+0

La syntaxe est invalide et met en surbrillance la virgule dans cette ligne: 'except ValueError, e:' – pecker

+1

Le script fonctionne sans ligne vide lorsqu'il est coupé-collé dans un fichier Python. Si vous le tapez dans une invite interactive, une ligne vide serait nécessaire, cependant. –

2

Essayez except ValueError as e:, la syntaxe plus ancienne que vous utilisez est invalide en Python 3.

+0

maintenant il lance à nouveau la syntaxe invalide mais en soulignant la citation de fermeture de 'print" Pas un entier valide (% d) "% (e)' – pecker

+0

@pecker: vous utilisez le code python-2.x avec un interpréteur py3k. Je pourrais dire quelle erreur va être lancée après que vous aurez corrigé celui-ci. – SilentGhost

+0

si vous utilisez effectivement python 3 alors 'print' est une fonction, et doit être appelée comme' print ("Pas un entier valide (% d)"% e) 'ou mieux encore' print ("Pas un nombre entier valide (", int (e),") ")' (ne sait pas si la syntaxe% fonctionne encore dans py3k) –

1

Votre code (coupé et collé, pas de modifications) fonctionne très bien pour moi (Python 2.5). BTW, votre test = int ... ligne devrait être après l'essai (et indenté de manière appropriée) et le% d dans "Un entier non valide (% d)" devrait être un% s.

La syntaxe pour la gestion des exceptions a été modifiée pour Python 3: assurez-vous que toute aide/tutoriel que vous suivez concerne la même version majeure de Python que vous avez installée. Il y a eu des changements significatifs de 2.x à 3.x.

5

print sans parenthèses provient de python 2, si vous utilisez python 3, vous devez utiliser print().

Vous ne pouvez pas formater une exception car %d - %d est pour les entiers.