Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec les inputs sous Windows

Sujet résolu
    28 février 2011 à 7:26:25

    Bonjour,
    J'ai commencé le cours officiel sur Python depuis peu. Jusqu'à date, tout va bien, je n'ai pas de problèmes à exécuter mes programmes Python. Par contre, j'ai remarqué que lorsque j'exécute un fichier python sans passer par IDLE (donc en double-cliquant dessus), les input() n'ont pas l'air de retourner la bonne valeur. Si je veux vérifier que l'utilisateur a entré la lettre 'a' par exemple, ça marche très bien sur IDLE, mais pas lorsque je l'exécute directement.
    Je ne sais pas si c'est normal ou si c'est un bug connu. J'ai déjà cherché à propos du problème mais je n'ai rien trouvé.
    À titre informatif, je suis sous Windows 7 64-bit et j'utilise la version 3.2 de Python.

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      28 février 2011 à 8:55:12

      Bonjour,

      peux-tu nous donner ton code-source s'il te plaît ?
      Essayes:

      a = input("Entrez une lettre ou un chiffre: ->")
      print(a)
      


      Quel résultat obtiens-tu ?
      • Partager sur Facebook
      • Partager sur Twitter
        1 mars 2011 à 4:53:22

        Voici mon code complet
        # -*-coding:utf-8 -*
        
        import os
        
        a = input("Entrez une lettre ou un chiffre: ->")
        print(a)
        
        os.system("pause")
        


        Si j'exécute le fichier et que j'écris par exemple la lettre 'b' dans le input, voici ce que ça retourne (directement copié de la console)
        Entrez une lettre ou un chiffre: ->b
        b
        Appuyez sur une touche pour continuer...


        J'ai testé ton code avec une simple condition comme ceci
        # -*-coding:utf-8 -*
        
        import os
        
        a = input("Entrez une lettre ou un chiffre: ->")
        if a == 'b':
        	print(a)
        
        os.system("pause")
        

        Le problème persiste toujours, il ne rentre pas dans la condition. Par contre, encore une fois, sur IDLE ça marche.
        • Partager sur Facebook
        • Partager sur Twitter
          1 mars 2011 à 8:31:06

          La fonction print permet d'afficher la variable passée en paramètre.

          a = input("Entrez une lettre ou un chiffre: ->")
          print(a)
          


          Dans la première ligne il te demande de rentrer quelque chose. Ce "quelque chose" est capturé dans la variable 'a'.
          Dans la deuxième ligne tu affiches ta variable 'a'

          Entrez une lettre ou un chiffre: ->b
          b
          Appuyez sur une touche pour continuer...


          => Tout est normal
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            1 mars 2011 à 11:30:15

            Bonjour,

            Je viens de tester Python 3.2 est en effet il y a un petit souci en console. Le problème vient du retour à la ligne de Windows ('\r\n'). Le '\n' est bien enlevé de la chaine après le input mais pas le '\r'... Je pense que c'est un bug. Je vais faire quelque recherche sur le net mais étant donné que la 3.2 est toute récente je ne pense pas qu'il y est encore de solution...

            Sinon, tu peux toujours repasser à la 3.1.2 qui est actuellement la plus stable des versions 3 ;)
            (ou la 3.1.3, je ne sais plus...)

            [edit] Il s'agit bien d'un bug (r88531). Il devrait être résolu à la prochaine version (mineur) de python... ;)
            • Partager sur Facebook
            • Partager sur Twitter
              1 mars 2011 à 14:46:43

              Citation : LeYan'tibus

              Bonjour,

              Je viens de tester Python 3.2 est en effet il y a un petit souci en console. Le problème vient du retour à la ligne de Windows ('\r\n'). Le '\n' est bien enlevé de la chaine après le input mais pas le '\r'... Je pense que c'est un bug. Je vais faire quelque recherche sur le net mais étant donné que la 3.2 est toute récente je ne pense pas qu'il y est encore de solution...

              Sinon, tu peux toujours repasser à la 3.1.2 qui est actuellement la plus stable des versions 3 ;)
              (ou la 3.1.3, je ne sais plus...)

              [edit] Il s'agit bien d'un bug (r88531). Il devrait être résolu à la prochaine version (mineur) de python... ;)



              Autant pour moi, un peu de recherche ne m'aurai pas fait de mal :-°
              • Partager sur Facebook
              • Partager sur Twitter
                1 mars 2011 à 18:59:08

                J'avais effectivement pensé au retour à la ligne mais comme je suis nouveau en Python, j'ai préféré demander.
                Merci pour ta réponse!
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  1 mars 2011 à 20:29:49

                  Si cela ne pose pas de problème pour les saisi de texte dont tu as besoin tu peux "stripper" ta chaine comme ceci :

                  s = input("Appuyez sur la touche 'a' puis validez : ")
                  s = s.strip()
                  if s == 'a':
                      print('Youpi !! ça marche !  ;)')
                  

                  ;)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    2 mars 2011 à 4:34:53

                    C'est effectivement une bonne solution temporaire mais bon... Pour l'instant je ne fais qu'apprendre donc j'vais me contenter d'exécuter avec IDLE :p
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Problème avec les inputs sous Windows

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown