Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Python] conditions

comprends pas trop

    24 septembre 2006 à 21:29:17

    comparé au php, les choses sont simples
    les conditions sont définies entre les " { " et " } " ou alros on ajoute un endif

    par contre sous python, je n'arrive pas à m'imaginer la fin d'une condition.

    exemple avec le tuto

    # On importe la fonction
    from random import randrange

    recommencer = 0 # 0 si on veut recommencer, 1 si on veut arreter

    while recommencer != 1:
        # Tant que l'utilisateur n'a pas trouve le nombre cache
        # On tire un nombe au hasard entre 0 et 100
        nombre_cache = randrange(0, 100)
        nombre_utilisateur = -1
        while nombre_utilisateur != nombre_cache:
            # On demande a l'utilisateur un nombre
            nombre_utilisateur = input("Entrez un nombre compris entre 0 et 100 : ")
            # On compare avec le nombre cache
            if nombre_utilisateur > nombre_cache:
                print "Le nombre cache est plus petit"
            elif nombre_utilisateur < nombre_cache:
                print "Le nombre cache est plus grand"
       
        print "Vous avez trouve le nombre cache !"
        print "Voulez-vous recommencer ?"
        recommencer = input("0. Oui\n1. Non\n")


    j'ai voulu l'améliorer afin que le message d'input affiche dans son message
    Entrez un nombre compris entre 0 et LeDernierNombreEntre :

    voilà ce que j'ai fait :
    # On importe la fonction
    from random import randrange

    recommencer = 0 # 0 si on veut recommencer, 1 si on veut arreter

    while recommencer != 1:
        # Tant que l'utilisateur n'a pas trouve le nombre cache
        # On tire un nombe au hasard entre 0 et 100
        nombre_cache = randrange(0, 100)
        nombre_utilisateur = -1
        compteur = 0
        while nombre_utilisateur != nombre_cache:
            # On demande a l'utilisateur un nombre
            compteur = compteur +1
            if nombre_utilisateur != -1 :
            nombre_utilisateur = input("Entrez un nombre compris entre 0 et ", nombre_utilisateur ," :")
            else : nombre_utilisateur = input("Entrez un nombre compris entre 0 et 100 : ")
           
            # On compare avec le nombre cache
            if nombre_utilisateur > nombre_cache:
                print "Le nombre cache est plus petit que ", nombre_utilisateur
            elif nombre_utilisateur < nombre_cache:
                print "Le nombre cache est plus grand que ", nombre_utilisateur
                
        print "Vous avez trouve le nombre cache en", compteur ," coups"
        print "Voulez-vous recommencer ?"
        recommencer = input("0. Oui\n1. Non\n")

    j'ai biensur une erreur, mais n'arrive aps a comprendre pourquoi ...

    je suppose que çà vient de mes conditions ajoutées.
    après le else, j'iamerais que ma condition s'arrette, et pas que tout ce qui suit le else soit compris dans le else ...
    • Partager sur Facebook
    • Partager sur Twitter
      25 septembre 2006 à 0:23:52

      c'est par bloc que python fonctionne, donc çà fait :
      if condition = true:
          # dans la condition
          # dans la condition
      # plus dans la condition
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        25 septembre 2006 à 19:08:16

        Après un if, else ou n'importe quoi, tu as forcément un bloc de code indenté. Cherche où tu n'as pas indenté ton code correctement.
        • Partager sur Facebook
        • Partager sur Twitter
          25 septembre 2006 à 19:15:00

          d'accord avec vous, mais comment s'apercevoir qu'on sort du bloc de la condition ???

          if condition = true:
          # dans la condition
          # dans la condition
          # plus dans la condition , mais pourquoi a ce moment là, #et pas la ligne après ?
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            25 septembre 2006 à 19:23:46

            Parce qu'on n'indente plus, tout simplement. Tant que tu as le même nombre d'espaces au début de la ligne, tu es dans le même bloc.
            • Partager sur Facebook
            • Partager sur Twitter
              25 septembre 2006 à 19:35:22

              indenter veux dire quoi en fait ?
              je croyais savoir que çà signifiait les " : " pour chaque case .... ?

              tu veux donc dire que si je décale des lignes, elle sortiront du bloc de la condition ???

              if condition = true:
              # dans la condition
              # dans la condition
              # plus dans la condition car non aligné avec les autres
              # toujours pas dans la condition car non aligné aussi

              • Partager sur Facebook
              • Partager sur Twitter
                25 septembre 2006 à 19:36:59

                Mets dans des balises de code Python car dans du texte normal les espaces que tu mets ne se voient pas :-°
                • Partager sur Facebook
                • Partager sur Twitter
                  25 septembre 2006 à 20:07:02

                  if condition = true:
                  # dans la condition
                  # dans la condition
                       # plus dans la condition car non aligné avec les autres
                        # toujours pas dans la condition car non aligné aussi 
                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 septembre 2006 à 20:19:34

                    Plus précisément:

                    if condition = true:
                        # dans la condition
                        # dans la condition
                           # plus dans la condition car non aligné avec les autres
                              # toujours pas dans la condition car non aligné aussi
                    elif condition = true:
                        # dans la condition
                        # dans la condition
                              # plus dans la condition car non a
                        if condition = true: #Condition de la condition
                            # dans la condition
                            # dans la condition
                               # plus dans la condition car non aligné avec les autres
                                  # toujours pas dans la condition car non aligné aussi 


                    Je laisse les autres s'occupper de t'expliquer, moi, je vais aller manger!
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      25 septembre 2006 à 20:40:39

                      Citation : Antalmir

                      Plus précisément:


                      if condition = true:
                          # dans la condition
                          # dans la condition
                             # plus dans la condition car non aligné avec les autres
                                # toujours pas dans la condition car non aligné aussi
                      elif condition = true:
                          # dans la condition
                          # dans la condition
                                # plus dans la condition car non a
                          if condition = true: #Condition de la condition
                              # dans la condition
                              # dans la condition
                                 # plus dans la condition car non aligné avec les autres
                                    # toujours pas dans la condition car non aligné aussi 




                      Plus précisemment,


                      if condition == True
                          # dans la condition
                          # dans la condition
                              # Non valide si l'instruction précédente n'ouvrait pas un bloc (mais pour un if, else, etc... c'est bon)
                          # Fin du bloc précédent, on revient dans le premier bloc
                      # fin du bloc if

                      • Partager sur Facebook
                      • Partager sur Twitter
                        26 septembre 2006 à 19:48:22


                        Merci pour touets ces précisions
                        Parcontre je n'y arriverais jamais, j'ai vraiment du mal decidement !!!
                        qu'est ce qui ne va pas dans mon code simple ?
                        #!/usr/bin/env python

                        # Mon premier programme
                        # MasterMind

                        from random import randrange

                        nbre_alea = randrange(0,200)
                        nbre_entre = input('Entrer un nombre :')
                               
                                 if(nbre_entre < nbre_alea) :
                                        a = 'Le nombre que vous venez d\'entrer = est trop grand'
                                        print str(a[:35]), nbre_entre, str(a[35:])
                                 elif nbre_entre > nbre_alea :
                                        a = '
                        Le nombre que vous venez d\'entrer = est trop petit'
                                        print str(a[:35]), nbre_entre, str(a[35:])
                                 else :
                                        print 'bravo, c\'est trouvé'   
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          26 septembre 2006 à 19:54:37

                          Pourquoi tu indentes ton if ? Le if ne doit pas être indenté (sauf s'il est déjà dans un bloc lui même), c'est ce qui le suit qui doit l'être.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            26 septembre 2006 à 19:59:23

                            je en comprends, j'avoue
                            j'apprends le python d'après ce tuto (pour le moment)
                            http://python.developpez.com/cours/yvesbailly/initiationpython/yb04/#LII

                            et ou vois cette exemple :
                            if ( nombre_joueur == nombre_hasard ) :
                               print "Vous avez trouvé!"
                             else :
                               if ( nombre_jouer > nombre_hasard ) :
                                 print "Trop grand!"
                               else :
                                 print "Trop petit!"


                            alors que faut il faire exactement ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              26 septembre 2006 à 20:30:42

                              Lui signaler que son truc est faux. Il aurait pu écrire :

                              if ( nombre_joueur == nombre_hasard ) :
                                 print "Vous avez trouvé!"
                              else :
                                 if ( nombre_jouer > nombre_hasard ) :
                                   print "Trop grand!"
                                 else :
                                   print "Trop petit!"


                              Le premier couple if/else n'est pas indenté car il n'appartient à aucun bloc. Le deuxième couple if/else par contre appartient au bloc du premier else.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                26 septembre 2006 à 20:50:33

                                pourtant en essayant de ne pas indenter mon premier if, sa plante toujours
                                arffffffffffffffff

                                #!/usr/bin/env python

                                # Mon premier programme
                                # MasterMind

                                from random import randrange

                                nbre_alea = randrange(0,200)
                                nbre_entre = input("Entrer un nombre :")
                                       
                                        if nbre_entre == nbre_alea  :
                                                a = "Le nombre que vous venez d\'entrer = est trop grand"
                                                print str(a[:35]), nbre_entre, str(a[35:])
                                         else:
                                                if nbre_entre > nbre_alea :
                                                        a = "Le nombre que vous venez d\'entrer = est trop petit"
                                                        print str(a[:35]), nbre_entre, str(a[35:])
                                                else :
                                                        print "bravo, c\'est trouvé"
                                print ' ceci est la fin du bloc indenté '
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  26 septembre 2006 à 20:52:59

                                  Je suis désolé mais il est indenté là ton if :-°
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    26 septembre 2006 à 20:56:55

                                    expliques moi en quoi il est indenté, parce que là je crois que je vais stoppé, se prendre la tête parce qu'on a tappé un space en trop :-°
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Anonyme
                                      26 septembre 2006 à 21:04:40

                                      Tu vois pas les espaces en début de ligne ? Intéressant.

                                      Edit : ah au fait Python signale les erreurs qu'il rencontre. Si tu exécutes ton programme correctement (ça doit être indiqué sur le cours que tu lis, sinon consulte les Annexes de celui du SDZ), tu peux les obtenir. Ca pourrait t'aider (ça et un bon opticien).
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        26 septembre 2006 à 21:08:39

                                        alors ne pas indenter un bloc, veut donc dire ne pas mettre d'espaces du tout ???
                                        c'est à dire qu'il faut l'accoler à la ligne ?

                                        bon soit, mais là en faisant comme il semble faire, pourquoi ai je une erreur ?

                                        sys:1: DeprecationWarning: Non-ASCII character '\xc3' in file /home/imotep/Desktop/webmaster/progr.py on line 12, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
                                        #!/usr/bin/env python

                                        # Mon premier programme
                                        # MasterMind

                                        from random import randrange

                                        nbre_alea = randrange(0,200)
                                        nbre_entre = input("Entrer un nombre :")

                                        if nbre_entre == nbre_alea  :
                                                 a = "bravo c est trouvé !!!"
                                        else:
                                                        if nbre_entre > nbre_alea :
                                                                a = "Le nombre que vous venez d\'entrer = est trop petit"
                                                                print str(a[:35]), nbre_entre, str(a[35:])
                                                        else :
                                                                print "Le nombre que vous venez d\'entrer est trop grand"
                                        print ' ceci est la fin du bloc indenté '


                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Anonyme
                                          26 septembre 2006 à 21:10:01

                                          Où ça une erreur ? C'est juste un warning.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            26 septembre 2006 à 21:17:52

                                            Bon bin en supprimant tous les accents effectivement sa fonctionne bien

                                            #!/usr/bin/env python

                                            # Mon premier programme
                                            # MasterMind

                                            from random import randrange

                                            nbre_alea = randrange(0,200)
                                            nbre_entre = input("Entrer un nombre :")

                                            if nbre_entre == nbre_alea  :
                                                    a = "Le nombre que vous venez d\'entrer = est correct"
                                                    print str(a[:35]), nbre_entre, str(a[35:])
                                            else:
                                                    if nbre_entre > nbre_alea :
                                                            a = "Le nombre que vous venez d\'entrer = est trop petit"
                                                            print str(a[:35]), nbre_entre, str(a[35:])
                                                    else :
                                                            print "Le nombre que vous venez d\'entrer est trop grand"
                                                    print '/n/nsortie'


                                            bon je vais m'amuser à mettre une boucle en plus dans le code :o
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Anonyme
                                              26 septembre 2006 à 22:06:38

                                              Ben oui c'est difficile, tu rajoutes ta boucle et tu indentes le if et le else pas indentés de quelques espaces :D
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                26 septembre 2006 à 23:08:36

                                                Utilise un logiciel pour coder en python, il gérera avec toi l'indentation et tu auras moins de problèmes !
                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                [Python] conditions

                                                × 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