11
votes

Entrée de ligne de commande Cause SyntaxError

J'ai une simple question de python que j'ai gelé le cerveau sur. Cet extrait de code fonctionne. Mais quand je substitue "258 494-3929" avec phonenumber, j'obtiens l'erreur suivante ci-dessous:

 Pattern does not match  
 Please enter a phone number: 258 494-3929  
 Traceback (most recent call last):  
    File "pattern_match.py", line 16, in <module>  
      phoneNumber = str(input("Please enter a phone number: "))  
    File "<string>", line 1  
      258 494-3929  
          ^
  SyntaxError: invalid syntax

   C:\Users\Developer\Documents\PythonDemo>  


1 commentaires

Est-ce que vous stockez comme une chaîne ou une crue?


4 Réponses :


2
votes

entrée () appels eval (Raw_Input (Invite)) , donc vous voulez phonenumber = Raw_Input ("Veuillez entrer un numéro de téléphone:") ()

Voir aussi http://docs.python.org/library/fonctions.html #input et http://docs.python.org/library/functions .html # Raw_Input


0 commentaires

15
votes

Vous devez utiliser brut_input au lieu de entrée , et vous n'avez pas à appeler str , car cette fonction renvoie une chaîne elle-même: xxx


0 commentaires

4
votes

La fonction d'entrée () en réalité évalue l'entrée qui est saisie: xxx

Il tente d'évaluer "258 494-3929" qui est invalide python.

Utilisez sys.stsdin.readline (). Strip () Pour faire votre lecture.


0 commentaires

10
votes

en version 2.x Python, entrée () Deux choses:

  1. lit une chaîne de données. (Vous voulez cela.) Li>
  2. Puis il évalue la chaîne de données comme s'il s'agissait d'une expression python. (Cette partie provoque l'erreur.) LI> ol>

    La fonction RAW_Input () est meilleure dans cette situation car elle le fait n ° 1 ci-dessus mais pas # 2. p>

    Si vous changez: P>

    raw_input("Please enter a phone number: ")
    


2 commentaires

appeler str () n'est pas nécessaire après l'appel Raw_Input () (sauf si c'était une erreur CUT-N-CLET) :-) Votre autre point est tout à fait valide: Utilisez < Code> Raw_Input () dans Python 2 et Entrée () Dans Python 3 ... Le nom a été modifié mais la fonction reste la même. Entrée () Dans Python 2 provoque des problèmes tels que décrits par le PO, d'où la raison pour laquelle il est en train d'être / été retiré de la langue (à Python 3, c'est-à-dire)


Il est vrai que l'appel str () est superflu, comme cela a été mentionné dans certaines des autres réponses. Cependant, ce n'est pas causant la syntaxeRorror.