Partage
  • Partager sur Facebook
  • Partager sur Twitter

Booléen

    27 octobre 2018 à 18:51:49

    Bonsoir a tous je suis tout nouveau en programmation et j'ai choisi Python.

    Je suis actuellement le cours "Apprenez a programmer en python"

    J'ai une question toute bête s'il vous plait, quelqu'un peut me faire comprendre ça?

    >>> age = 21
    >>> majeur = False
    >>> if age >= 18:
    >>>     majeur = True
    


    Surtout les lignes 2 et 4. Je sais que ce sont des booléens mais je ne les comprends pas.

    Merci d'avance.

    -
    Edité par juniorpaix 27 octobre 2018 à 18:54:13

    • Partager sur Facebook
    • Partager sur Twitter
      27 octobre 2018 à 22:50:51

      Salut,

      Qu'est-ce que tu ne comprends pas précisément ?

      Bon ici le code gagnerait à être réécrit

      age = 21
      majeur = age >= 18
      

      Ce serait plus simple.

      • Partager sur Facebook
      • Partager sur Twitter
        28 octobre 2018 à 2:11:25

        Ce sont des variables aussi oui.
        • Partager sur Facebook
        • Partager sur Twitter

        Blond, bouclé, toujours le sourire aux lèvres...

          28 octobre 2018 à 2:13:16

          Bizarre, ma réponse apparaît avant le post auquel je répond.
          • Partager sur Facebook
          • Partager sur Twitter

          Blond, bouclé, toujours le sourire aux lèvres...

            28 octobre 2018 à 2:13:49

            Tiens, c'est rigolo ce bug.
            • Partager sur Facebook
            • Partager sur Twitter

            Blond, bouclé, toujours le sourire aux lèvres...

            Anonyme
              28 octobre 2018 à 2:14:37

              Le forum et sa gestion des dates... (on vient de changer d'heure) xD

              -
              Edité par Anonyme 28 octobre 2018 à 2:14:53

              • Partager sur Facebook
              • Partager sur Twitter
                28 octobre 2018 à 2:39:33

                Je vois une variable "age = 21".

                Je vois aussi "majeur = False" et je ne sais pas si lui aussi est une variable.

                Je vois encore "majeur = True".

                C'est flou pour moi surtout les ligne 2 et 4, là où on voit "majeur".

                -
                Edité par juniorpaix 28 octobre 2018 à 2:40:56

                • Partager sur Facebook
                • Partager sur Twitter
                  28 octobre 2018 à 9:17:23

                  Oui, majeur est aussi une variable à laquelle tu assignes une valeur booléenne. Le booléen est un type de données, tout comme le sont les nombres, les chaînes de caractères ou les listes.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 octobre 2018 à 17:51:16

                    Je ne me retrouve vraiment pas dans la chronologie des postes, ok pas grave.

                    Je ne sais pas pourquoi a la fin de ce code, "majeur" est "True" alors que age est inférieur a 18.

                    -
                    Edité par juniorpaix 28 octobre 2018 à 17:55:47

                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 octobre 2018 à 18:02:12

                      Parce qu'à ta deuxième ligne tu définis majeur à True, donc il sera à True dans tous les cas.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        28 octobre 2018 à 18:30:52

                        ggrrr!!!

                        Est ce que tu veux me faire savoir que:

                        - si majeur aux lignes 2 et 4 sont "True" a la fin majeur vaudra forcement "True"?

                        - si majeur aux lignes 2 et 4 sont "False" a la fin majeur vaudra forcement "False"?

                        - et que si majeur aux lignes 2 et 4 sont différents le résultat dépendra du prédicat entre le "if" et les ":"?

                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 octobre 2018 à 18:36:32

                          Oui.

                          As-tu compris le concept de conditions ? Tu n'exécutes les lignes indentés sous un bloc conditionnel uniquement si la condition testée est vraie.

                          Les lignes en dehors sont exécutées dans tous les cas. Donc dans ton code, la ligne 2 est exécutée à chaque fois, tandis que la ligne 4 n'est exécutée que si age est supérieur à 18.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            28 octobre 2018 à 19:42:52

                            Oui je sais que ce sont les ligne indentées sous une bloc qui sont exécutées.

                            En fait ma grosse préoccupation est le "majeu" de la ligne 2, sommes nous obligé de l’écrire??

                            • Partager sur Facebook
                            • Partager sur Twitter
                              28 octobre 2018 à 20:21:58

                              Non, il n'est pas obligatoire.

                              Mais il faut qu'une valeur ait été définie pour pouvoir être utilisée. Imaginons que plus loin dans ton code (en dehors de ton bloc conditionnel), tu cherches à accéder à la variable majeur. Si tu retires la seconde ligne, cette variable n'existera que lorsque la condition age >= 18 était vraie, et tu obtiendras une erreur dans le cas contraire (comme quoi tu essaies d'accéder à une variable qui n'existe pas)).

                              Mais si c'est plus clair pour toi, tu pourrais aussi avoir une définition dans le else :

                              age = 15
                              
                              if age >= 18:
                                  majeur = True
                              else:
                                  majeur = False
                              
                              • Partager sur Facebook
                              • Partager sur Twitter
                                28 octobre 2018 à 22:01:40

                                Ok, je commence a voir le bout du tunnel, je crois que tout sera claire avec le temps.

                                Merci de tout coeur entwanne.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  28 octobre 2018 à 22:12:24

                                  Avec le temps et en faisant plein de tests !

                                  Il faut pas hésiter à tester des bouts de code dans tous les sens pour voir ce que ça fait.

                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Blond, bouclé, toujours le sourire aux lèvres...

                                    28 octobre 2018 à 22:26:15

                                    Ok merci a tous pour l'aide et les conseils.

                                    Est il possible de télécharger ce document "https://docs.python.org/fr/3/contents.html" en fichier PDF ou une autre version permettant la lecture hors ligne?

                                    -
                                    Edité par juniorpaix 28 octobre 2018 à 22:37:51

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      28 octobre 2018 à 22:51:15

                                      Oui, par ici : https://docs.python.org/fr/3/download.html

                                      (cette page mériterait d'ailleurs d'être traduite, mais je crois qu'elle ne fait pas pleinement partie de la documentation)

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        28 octobre 2018 à 22:51:50

                                        Salut,

                                        Un petit coup de baguette et voila pour toi l'ami!:magicien:

                                        https://docs.python.org/fr/3/download.html

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          28 octobre 2018 à 23:43:33

                                          Merci les gares. De tout coeur.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            30 octobre 2018 à 1:33:21

                                            Salut les gares, c'est encore moi.

                                            Cette fois je suis sur cet exercice:

                                            et voila comment je l'ai compris et résolu:

                                            annee = input("Entrez une année : ")
                                            annee = int(annee)
                                            bissextile = False
                                            if annee % 4 != 0:
                                                bissextile = False
                                            if (annee % 4 == 0 and annee % 100 == 0):
                                                if annee % 400 == 0:
                                                    bissextile = True
                                                else:
                                                    bissextile = False
                                            else:
                                                bissextile = False
                                            if bissextile:
                                                print("L'année", annee, "est bissextile")
                                            else:
                                                print("L'année", annee, "n'est pas bissextile")


                                            Dites moi si ma résolution est bonne ou pas, et vous pouvez m'en proposer même si la mienne est bonne.

                                            Merci d'avance.

                                            -
                                            Edité par juniorpaix 30 octobre 2018 à 1:34:28

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              30 octobre 2018 à 8:13:21

                                              As-tu essayé avec quelques années que tu sais bissextiles pour vérifier tes calculs, 2016 par exemple ? C'est la première des choses à faire, et tu constateras que ton algorithme n'est pas bon.

                                              De plus ta condition annee % 4 == 0 n'a pas d'intérêt, tu sais déjà qu'elle est vraie, sinon tu serais passé dans le premier if.

                                              En plus court ça donnerait

                                              bissextile = (annee % 4 == 0) and (annee % 100 != 0 or annee % 400 == 0)
                                              

                                              -
                                              Edité par entwanne 30 octobre 2018 à 8:15:55

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                1 novembre 2018 à 4:22:12

                                                Resalut les gares et excusez moi pour le retard. Oui entwanne j'ai testé avec quelques années (2000, 2001, 2002, 2003), seulement je n'ai pas poussé le test, maintenant je me rends compte que ma résolution n'est pas parfaite. Je ne comprends pas, comment est ce que "annee % 4 == 0" n'a pas d’intérêt? Comment est ce qu'elle est déjà vrai? Peux tu m'expliquer s'il te plait? Merci.
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  1 novembre 2018 à 9:57:06

                                                  juniorpaix a écrit: > Peux tu m'expliquer s'il te plait?

                                                  C'est ce que je viens de faire déjà. J'avais mal lu ton code et pensais que tu avais un elif et non un if ligne 6, ce qui aurait été plus logique. Je disais donc que ça n'avait pas d'intérêt parce que la condition viendrait juste d'être testée, tu n'as alors pas besoin de la répéter toutes les lignes.

                                                  Aussi, dans tes tests tu ne vérifie qu'une année bissextile (2000) qui correspond de plus à un cas bien particulier : multiple de 400. Tu ne testes pas les simples multiples de 4, ni les multiples de 100 (qui ne le sont pas de 400).

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    2 novembre 2018 à 0:32:43

                                                    Salut tout le monde.

                                                    Excuse moi entwanne lorsque je mets un "if" a la ligne 6 mon code est faut 

                                                    annee = input("Entrez une année : ")
                                                    annee = int(annee)
                                                    bissextile = False
                                                    if (annee % 4 == 0 and annee % 100 != 0):
                                                        bissextile = True
                                                    if annee % 400 == 0:
                                                        bissextile = True
                                                    else:
                                                        bissextile = False
                                                    if bissextile:
                                                        print("L'année", annee, "est bissextile")
                                                    else:
                                                        print("L'année", annee, "n'est pas bissextile")
                                                    
                                                    

                                                    , mais lorsque je mets un "elif" ça marche.

                                                    annee = input("Entrez une année : ")
                                                    annee = int(annee)
                                                    bissextile = False
                                                    if (annee % 4 == 0 and annee % 100 != 0):
                                                        bissextile = True
                                                    elif annee % 400 == 0:
                                                        bissextile = True
                                                    else:
                                                        bissextile = False
                                                    if bissextile:
                                                        print("L'année", annee, "est bissextile")
                                                    else:
                                                        print("L'année", annee, "n'est pas bissextile")
                                                    
                                                    

                                                    Quelqu'un peut m'expliquer la nuance entre le "if" et le "elif"?

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      2 novembre 2018 à 1:33:25

                                                      Dans le premier cas tu as deux blocs de code, un if, puis ensuite un if/else. Le premier if, dans ton exemple, est inutile puisque tu vas passer par le if ou le else suivant, donc la valeur de la variable sera écrasée.

                                                      Dans le deuxième, tu as un seul ensemble, le code qui correspond à la première condition vraie sera exécuté, et c'est tout, contrairement au premier exemple dans lequel tu en auras toujours deux.

                                                      Tu peux mettre des print pour suivre le déroulement du programme, c'est assez formateur et ça permet de comprendre plein de choses, en plus d'être la base du debug.

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter

                                                      Blond, bouclé, toujours le sourire aux lèvres...

                                                      Booléen

                                                      × 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