IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

comportement de print et input sur linux


Sujet :

Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 74
    Points : 42
    Points
    42
    Par défaut comportement de print et input sur linux
    Bonjour,

    J'ai commencé à lire sur python récemment et j'ai voulu testé un code sous debian, avec python 2.7.3, qui marche très bien sous windows.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a=input("Voulez-vous quitter ? (o/n)")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print("Votre choix était ", a)
    Pour input, quelle ne fut pas ma surprise quand j'ai réalisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> a = input()
    o
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<string>", line 1, in <module>
    NameError: name 'o' is not defined
    J'ai contourné mon problème en passant par l'équivalent raw_input selon la documentation. Mais j'aimerai savoir pourquoi sous linux son comportement est différent et pourquoi input() ne peut récupérer de chaînes de caractères sans l'entourer de guillemets ? (alors que python est sensé être portable)

    Pour print j'ai lu que celui-ci n'était plus une fonction et qu'il suffisait d'enlever les parenthèses. Mais pareil ici, pourquoi sous windows cela marche ?

    Et quand on écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "Votre choix était", a
    Comment faire pour que print ne mette pas automatiquement un espace avant et après la valeur de a ou dois-je passer par une autre fonction encore ?

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    C'est parce que tu utilise ces lignes en console, que tu as cette erreur.
    Après avoir entré o[enter] le enter fera que l'interpréteur interactif réagira comme pour une entrée de code valide.

    Un autre exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    >>> o = 'foo'
    >>> a = input()
    o
    >>> a
    'foo'
    >>>
    Pour print j'ai lu que celui-ci n'était plus une fonction
    En fait, c'est le contraire, print devient fonction à partir de Python 3.

    L'espace qui sépare les éléments printés, eux-même séparés d'une virgule dans la commande, est le comportement normal de Python.

    Utilise % ou format pour cela.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    print "Votre choix était %s" % a
    print "Votre choix était {0}".format(a)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/02/2008, 07h42
  2. Comportement étrange ksh sur linux
    Par hugo123 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 09/08/2006, 10h55
  3. lancer OEM via le browser (10g sur linux)
    Par learn dans le forum Entreprise Manager
    Réponses: 6
    Dernier message: 20/09/2004, 17h04
  4. [analyse de syntaxe] pour C et C++ sur Linux
    Par Madmac dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 10/07/2004, 06h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo