Partage
  • Partager sur Facebook
  • Partager sur Twitter

Types d'arbres France IOI

Sujet résolu
    17 octobre 2017 à 18:26:58

    Bonjour,

    Je suis bloqué sur un exercice: 

    Voici le sujet:

     Il existe 4 types d'arbres :

    • le "Tinuviel" fait moins de 5 mètres de haut et ses feuilles sont composées de plus de 8 folioles
    • le "Calaelen" fait plus de 10 mètres de haut et ses feuilles sont composées de plus 10 folioles
    • le "Falarion" fait moins de 8 mètres de haut et ses feuilles sont composées de moins de 5 folioles
    • le "Dorthonion" fait plus de 12 mètres de haut et ses feuilles sont composées de moins de 7 folioles

    Votre programme lira deux entiers, la hauteur et le nombre de folioles de l'arbre, et affichera le nom de l'arbre correspondant.

    Toutes les inégalités sont à prendre au sens large, c'est-à-dire que "moins" signifie "moins ou égal" ou et "plus" signifie "plus ou égal".

    Mon code: 

    hauteur = int(input())
    folioles = int(input())
    if (hauteur) >= 12:
       print ("Dorthonion")
    if (hauteur) <= 5:
       print ("Tinuviel")
    if (folioles) <= 5:
       print ("Falarion")
    if (folioles) >= 10:
       print ("Calaelen")
    else:
       print("")

    Le programme me sort deux types d'arbres, je ne comprend pas pourquoi?

    • Partager sur Facebook
    • Partager sur Twitter
      17 octobre 2017 à 18:58:50

      Bonjour,

      Tu auras toujours 2 ifs de vrai dans ton cas, il faut utiliser des "and" ou mettre des if de folioles sous les if de hauteur 

      • Partager sur Facebook
      • Partager sur Twitter
        17 octobre 2017 à 19:13:38

        J'ai mis les if sous les hauteur, ca ne fonctionne toujours pas

        hauteur = int(input())
        folioles = int(input())
        if (hauteur) >= 12:
           print ("Dorthonion")
        if (hauteur) <= 5:
           print ("Tinuviel")
           if (folioles) <= 5:
              print ("Falarion")
           if (folioles) >= 10:
              print ("Calaelen")



        • Partager sur Facebook
        • Partager sur Twitter
          17 octobre 2017 à 20:12:22

          Tu peux mettre plusieurs tests dans une même condition:

          #Pourquoi mets-tu des parenthèses à chaque fois???
          if hauteur >= 12 and folioles <= 7:
              print("Dorthonion")
          elif hauteur >= 10 and folioles >= 10:
              print("Calaelen")
          ...


          Pas contre je ne vois pas l'intérêt de faire des exercices si tu ne maîtrises pas les concepts que tu vas utiliser. Il vaut mieux d'abord lire un tutoriel (sur comment utiliser le bloc conditionnel par exemple) et ensuite consolider tes connaissances en faisant ces exercices.

          • Partager sur Facebook
          • Partager sur Twitter
          Précepte: Le mieux est l'ennemi du bien
          Anonyme
            17 octobre 2017 à 20:20:33

            Un bloc conditionnel ? Des opérateurs booléens ? Pfff en programmation ça sert à rien ce genre de truc... :-°

            get_treename = lambda h, n: {
                (h <= 5, n >= 8) : "Tinuviel",
                (h >= 10, n >= 10) : "Calaelen",
                (h <= 8, n <= 8) : "Falarion",
                (h >= 12, n <= 7) : "Dorthonion",
                (h <= 0, n <= 0) : ''
                }.get((True, True), '')
            
            print(get_treename(int(input()), int(input())))

            -
            Edité par Anonyme 17 octobre 2017 à 20:22:12

            • Partager sur Facebook
            • Partager sur Twitter
              18 octobre 2017 à 10:41:11

              Merci idiotBête mais malheureusement, je n'en suis pas du tout la au niveau de France IOI donc impossible pour l'instant de faire ce genre de programme
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                18 octobre 2017 à 12:04:37

                Oui je m'en doute, c'était ironique. ;)

                Le code ci-dessus présente un petit hack en Python qui permet de simuler des blocs switch ... case d'autres langages, ce n'est pas un truc à savoir absolument.
                • Partager sur Facebook
                • Partager sur Twitter
                  2 mai 2019 à 9:07:18

                  j'ai besoin de la solution en language C svp
                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 juillet 2019 à 19:55:46

                    Je pense qu'iKson tu n'as pas compris qu'il etait possible d'utiliser des if dans des if. Une fois que tu as compris ca l'exercice est simple.
                    Bon courage !
                    hauteur = int(input())
                    folioles = int(input())
                    if (hauteur) >= 12:
                        if(folioles) <= 7:
                            print ("Dorthonion")
                    if (hauteur) <= 5:
                        if(folioles) >= 8:
                            print ("Tinuviel")
                    if (hauteur) <= 8:
                        if (folioles) <= 5:
                            print ("Falarion")
                    if (hauteur) >= 10:
                        if (folioles) >= 10:
                            print ("Calaelen")

                    -
                    Edité par Heisenberg-2.0 18 juillet 2019 à 19:58:19

                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 juillet 2019 à 20:21:48

                      Il faut aussi penser à utiliser elif et savoir que 

                      if A:
                          if B:
                              action()
                      suite du code



                      est équivalent à et moins lisible que :

                      if A and B:
                          action()
                      suite du code




                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 juillet 2019 à 19:14:30

                        Si tu a 4 fofiole , ca pourrais etre un Dorthonion mais vu ta condition pour le Falarion ca te dira que c'est un falarion.
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Types d'arbres France IOI

                        × 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