Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur avec mon menu

Sujet résolu
    30 novembre 2011 à 23:14:13

    Bonsoir à tous,

    Je me suis récemment lancer au Python, une fois terminer le chapitre des conditions, j'ai voulu faire une sorte de menu comme dans le chapitre des conditions du langage C. Donc je fais : si menu = 1 alors affiche ça, sinon si il est égal à 2 affiche ça, sinon si il est égal à 3 affiche ça, et sinon affiche ça. Seulement il m'affiche tout le temps le else, même quand je met 1

    Voici mon code source :

    import os
    
    print("Bienvenue dans le menu\n")
    
    print("Choisissez se que vous voulez\n")
    
    print("1. Jambon\n")
    
    print("2. Fromage\n")
    
    print("3. Paté\n\n")
    
    print("Votre choix?\n")
    menu = input()
    
    if menu == 1:
     print("Vous avez choisi le jambon")
    elif menu == 2:
     print("Vous avez choisi le fromage")
    elif menu == 3:
     print("Vous avez choisi le paté")
    else:
     print("Tu te fou de moi n'est-ce pas?")
    
    os.system("pause")
    


    Merci d'avance :)
    • Partager sur Facebook
    • Partager sur Twitter
      30 novembre 2011 à 23:19:04

      input() retourne un str
      if menu == 1: compare donc un str à un int
      • Partager sur Facebook
      • Partager sur Twitter

      Python c'est bon, mangez-en. 

        30 novembre 2011 à 23:29:08

        Je savais que c'était une erreur débile. :colere2:

        Merci à toi. :)
        • Partager sur Facebook
        • Partager sur Twitter
          1 décembre 2011 à 15:06:26

          Bon, comme ça fait un milliard de fois que je fais cette remarque sur le forum, je me contenterai de la version courte :

          os.system("pause") == CACA

          D'ailleurs, d'une manière générale :

          os.system == CACA

          Si tu veux simplement marquer une pause à la fin de l'exécution :

          input("Appuyez sur la touche ENTREE pour continuer...")

          PS : Ce n'est pas de ta faute, c'est le tuto officiel qui pousse le lecteur à la faute en montrant cette pratique affreuse, non portable, et surtout dangereuse. Cela dit, il n'est jamais trop tard pour corriger le tir. :)
          • Partager sur Facebook
          • Partager sur Twitter
          Zeste de Savoir, le site qui en a dans le citron !
          Anonyme
            1 décembre 2011 à 15:32:28

            Citation

            PS : Ce n'est pas de ta faute, c'est le tuto officiel qui pousse le lecteur à la faute en montrant cette pratique affreuse, non portable, et surtout dangereuse. Cela dit, il n'est jamais trop tard pour corriger le tir



            D'ailleurs depuis le temps qu'on le dit cette modification devrait être faite depuis longtemps.

            Citation

            os.system == CACA



            On peut rajouter que le module subprocess fait très bien le travail.

            Citation : PEP 324

            - One small utility function is provided: subprocess.call(). It
            aims to be an enhancement over os.system(), while still very
            easy to use:

            - It does not use the Standard C function system(), which has
            limitations.

            - It does not call the shell implicitly.

            - No need for quoting; using an argument list.

            - The return value is easier to work with.

            • Partager sur Facebook
            • Partager sur Twitter
              1 décembre 2011 à 16:06:09


              Sans aller jusqu'à subprocess, pour appeler un programme externe, les fonctions os.execv et os.execve sont déjà suffisantes et bien plus sécurisées que system dans le cas du PO (un appel en fin de script).

              Mais quand bien même, on peut se passer d'appels systèmes à exec et de reposer sur des programmes non portables et externes au script pour faire un truc aussi simple qu'une pause dans l'exécution.

              Edit :

              Citation : fred1599

              Citation

              PS : Ce n'est pas de ta faute, c'est le tuto officiel qui pousse le lecteur à la faute en montrant cette pratique affreuse, non portable, et surtout dangereuse. Cela dit, il n'est jamais trop tard pour corriger le tir



              D'ailleurs depuis le temps qu'on le dit cette modification devrait être faite depuis longtemps.



              Pour info, je viens de poster la remarque dans les commentaires du tutoriel. Peut-être qu'ainsi elle sera entendue.
              • Partager sur Facebook
              • Partager sur Twitter
              Zeste de Savoir, le site qui en a dans le citron !
                1 décembre 2011 à 19:52:54

                D'accord merci, j'ai changé os.system par input() :)
                • Partager sur Facebook
                • Partager sur Twitter

                Erreur avec mon menu

                × 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