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 :

récupérer la touche 'enter' sous python


Sujet :

Python

  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 16
    Par défaut récupérer la touche 'enter' sous python
    Bonjour,

    Je débute en python et je suis bloqué sur un exercice.

    Voici l'énoncé :

    Écrivez un programme qui permette d'encoder des valeurs dans une liste. Ce programme devrait fonctionner en boucle, l'utilisateur étant invité à entrer sans cesse de nouvelles valeurs, jusqu'à ce qu'il décide de terminer en frappant <enter> en guise d'entrée. Le programme se terminerait alors par l'affichage de la liste.

    Mon problème est que je ne sais pas comment récupérer le 'enter' dans mon script. Après recherches sur internet, j'ai trouvé que l'on pouvait faire ça avec le code '\r' mais ça ne marche pas (...). Ce que je ne comprends pas c'est comment je peux entrer des valeurs sans appuyer sur 'enter' après chaque entrée.

    Tout ça n'est pas encore très clair pour moi, alors un petit coup de main serait le bienvenu.

    Merci d'avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut bout de réponse
    Il faut utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x = raw_input('Entrer quelque chose : ')
    , ça je pense que tu le sais déjà.


    Ensuite, si, par exemple, on tape
    sdg56 puis la touche Enter
    quand le raw_input('Entrer quelque chose : ') affiche Entrer quelque chose :
    x va prendre une valeur représentée par
    "sdg56"



    À partir de là, il est facile de conclure quelle valeur va prendre x si on tape Enter sans aucun caractère devant,
    et donc de conclure quel type de test sur x il faut fair pour savoir quand il faut cesser de proposer d'entrer des données.

    Et il faut voir du coté des boucles aussi. Voilà, ça devrait suffire.

  3. #3
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 16
    Par défaut
    Citation Envoyé par eyquem Voir le message
    Il faut utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x = raw_input('Entrer quelque chose : ')
    , ça je pense que tu le sais déjà.
    Oui c'est tout au début du cours

    Ensuite, si, par exemple, on tape
    sdg56 puis la touche Enter
    quand le raw_input('Entrer quelque chose : ') affiche Entrer quelque chose :
    x va prendre une valeur représentée par
    "sdg56"
    Ok. Question : pourquoi as-tu choisi sdg56 ?

    À partir de là, il est facile de conclure quelle valeur va prendre x si on tape Enter sans aucun caractère devant,
    et donc de conclure quel type de test sur x il faut fair pour savoir quand il faut cesser de proposer d'entrer des données.
    Facile, facile ... je dois avouer que je n'ai pas compris ton explication. Pourrais stp me donner un exemple (en rapport avec mon exo ce serait encore mieux hein!) ?

    Et il faut voir du coté des boucles aussi. Voilà, ça devrait suffire.
    Je pensais utiliser un while pour ça, genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while (pas la touche enter):
       item = raw_input ("veuillez ... :")
       liste.append('item')
     
    print liste

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Pour une boucle, while oui, ou for., c'est bon.


    Pas plus de raison de choisir - sdg56 - que - trou noir - , - comte de Paris - , - zpx13 m?)98f4 - ou - saucisson sec -.
    J'avais simplement besoin de caractères pour nourrir le raw_input() et faire resortir ce qui suit.

    Ce qui est important, ce n'est pas les caractères qui sont entrés mais les " présents dans la représentation de ce qui a été entré. Car si on ne rentre aucun caractères avant de taper Enter, par quelle représentation cela va-t-il se traduire ? ? Et donc qu'est ce qui va pouvoir être utilisé comme représentation d'un Enter sans caractères devant ?.....

    ......allons tu vas trouver, il faut bien que tu cherches un peu. C'est le (pas la touche enter) qui te pose problème, parce que tu ne vois pas que ta variable item doit y intervenir.
    Pour une boucle, il faut bien distinguer
    - comment ça tourne , une fois que ça a démarré
    - comment ça démarre. Il faut, avant de rentrer dans la boucle, initialiser le truc qui va y varier.

  5. #5
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 16
    Par défaut
    Salut,

    J'ai trouvé une façon de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    liste = []
    item =''
     
    while True:
        item = raw_input("Veuillez entrer une valeur : ")
        if item == '':
            break
        liste.append(item)
    print liste
    Cela fait ce qui était demandé, mais vu que dans le cours, on n'a pas encore vu l'instruction break, je me demande s'il n'y a pas une autre façon de faire. Le =='' (que je lis « égale à rien ») est-il vraiment orthodoxe ?

    De plus, je me demande aussi si ce code est portable ; je suis sous GNU/linux, est-ce que ça fonctionnera pareil sous OSX et windows ?

    Merci d'avance

  6. #6
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 16
    Par défaut
    Salut boobz
    Citation Envoyé par boobz Voir le message
    Le =='' (que je lis « égale à rien ») est-il vraiment orthodoxe ?
    Oui, de cette façon tu vérifies si ta variable correspond à une chaîne de caractères vide, ce qui n'est pas vraiment « rien ».

    Citation Envoyé par boobz Voir le message
    Cela fait ce qui était demandé, mais vu que dans le cours, on n'a pas encore vu l'instruction break, je me demande s'il n'y a pas une autre façon de faire.
    Au lieu d'utiliser « while True: », tu peux mettre une condition de fin à ta boucle « while », ça permettras de ne pas utiliser le « break » (cf. page 36 du cours).

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Eh bien voilà...

    Une chose que j'ai remarquée depuis que j'utilise Python:
    Python est tellement malin qu'on arrive à raccourcir des portions de programmes d'une façon incroyable. Prendre le réflexe, une fois arrivé à un code qui marche, de le reprendre permet souvent de s'apercevoir qu'on peut faire plus concis et souvent plus astucieusement du point de vue algorithmique.


    C'est pour dire que le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while True:
       if item=='':
            break
    bien sûr ça marche, mais il y a plus concis; cf ce qu'a écrit BebeFoetus.


    Orthodoxe ? Qu'est ce que ça veut dire orthodoxe ? C'est l'efficacité qui détermine si la doxa est respectée.


    Portabilité. Je ne sais pas répondre, je suis sous Windows et if item!='': marche sans problème.
    Mais je n'utilise plus cette condition depuis qu'on m'a montré qu'on peut faire plus court.

Discussions similaires

  1. Touche 'Enter' sous Word 2007
    Par Jean-Philippe 613 dans le forum Word
    Réponses: 1
    Dernier message: 06/10/2008, 22h48
  2. [JTable] Récupérer la touche [ENTER] dans mon Editor
    Par nicorama dans le forum Composants
    Réponses: 3
    Dernier message: 27/04/2007, 08h10
  3. [FLASH MX] Récupérer la touche tapée
    Par VincentB dans le forum Flash
    Réponses: 2
    Dernier message: 28/03/2005, 21h58
  4. Réponses: 5
    Dernier message: 21/12/2004, 16h19
  5. Réponses: 8
    Dernier message: 18/09/2003, 18h12

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