Partage
  • Partager sur Facebook
  • Partager sur Twitter

Trouver l'indice de la dernière occurence

    28 avril 2021 à 17:08:20

    Bonjour j'aurais besoin d'aide pour un exercice de NSI première qui est une matière où je ne suis pas vraiment très bon 

    voici l'énoncé :

    Programmer la fonction recherche, prenant en paramètre un tableau non vide tab (type list) d'entiers et un entier n, et qui renvoie l'indice de la dernière occurrence de l'élément cherché. Si l'élément n'est pas présent, la fonction renvoie la longueur du tableau.

    Exemples :

     >>> recherche([5, 3],1)
     >>> recherche([2,4],2) 
    0 
     >>> recherche([2,3,5,2,4],2) 
    3 

    -
    Edité par Fryzim 28 avril 2021 à 17:26:09

    • Partager sur Facebook
    • Partager sur Twitter
      28 avril 2021 à 17:23:28

      Bonjour, Merci de communiquer à la communauté le code que vous avez écrit pour recevoir aide et avis par rapport à celui-ci + modification du titre de votre sujet.

      Mauvais titre

      Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.

      Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).

      De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.

      Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.

      Pour modifier votre titre, éditez le premier message de votre sujet.

      (titre originel : Besoin d'aide exercice NSI)

      Liens conseillés

      • Partager sur Facebook
      • Partager sur Twitter
        28 avril 2021 à 17:35:28

        def recherche(li, index):
            for i in reversed(range(len(li))):
                if li[i] == index:
                    return i
            return len(li)
        

        Bonjour,
        Il aurait été appréciable de voir un début de réflexion, ou autre, prouvant que tu es essayé de réussir l'exercice par toi même, plus tôt que de trouver une réponse toute faite, pour autant je t'offre la réponse, gratuitement, mais, je ne fournirai pas d'explication au code, te laissant ainsi la joie de tenter de le comprendre et travailler malgré tout cette matière.

        Pour autant, si tu as des questions, je serai là pour y répondre.

        -
        Edité par Krotarox 28 avril 2021 à 17:36:17

        • Partager sur Facebook
        • Partager sur Twitter
          28 avril 2021 à 17:36:42

          Un indice: faire un range en reculant:
          for i in range(len(tab)-1, -1, -1):
          • Partager sur Facebook
          • Partager sur Twitter

          Le Tout est souvent plus grand que la somme de ses parties.

            28 avril 2021 à 20:16:52

            Fryzim a écrit:

            Bonjour j'aurais besoin d'aide pour un exercice de NSI première qui est une matière où je ne suis pas vraiment très bon 

            voici l'énoncé :

            Programmer la fonction recherche, prenant en paramètre un tableau non vide tab (type list) d'entiers et un entier n, et qui renvoie l'indice de la dernière occurrence de l'élément cherché. Si l'élément n'est pas présent, la fonction renvoie la longueur du tableau.

            Exemples :

             >>> recherche([5, 3],1)
             >>> recherche([2,4],2) 
            0 
             >>> recherche([2,3,5,2,4],2) 
            3 

            Tous les tests sont là, c'est assez rare pour le signaler.

            def recherche(li, n):
                pass
            
            
            assert recherche([5, 3], 1) == 2
            assert recherche([2, 4], 2) == 0
            assert recherche([2, 3, 5, 2, 4], 2) == 3
            

            Il n'y a plus qu'à... à savoir que la solution proposée plus haut serait plus avantageuse avec le mot clé enumerate.

            mais je pense que le PO ne veut ni enumerate, ni reversed dans sa fonction.

            et quelque chose de beaucoup plus moche avec des indices, range et len, un bon prof qui aime le C :D

            • Partager sur Facebook
            • Partager sur Twitter

            Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
            La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

              28 avril 2021 à 21:41:53

              Fryzim a écrit:

              Bonjour j'aurais besoin d'aide pour un exercice de NSI première qui est une matière où je ne suis pas vraiment très bon 

              voici l'énoncé :

              Programmer la fonction recherche, prenant en paramètre un tableau non vide tab (type list) d'entiers et un entier n, et qui renvoie l'indice de la dernière occurrence de l'élément cherché. Si l'élément n'est pas présent, la fonction renvoie la longueur du tableau.

              Bon exo qui est censé faire travailler les boucles. L'idée est très simple, tu parcours ta liste L par la fin avec un indice j initialisé à n-1 où n est la longueur de la liste, j allant en décroissant de 1. Quand L[j] vaut la valeur à tester, c'est fini tu return la valeur de j. Si tu t'appretes à quitter la liste (donc quand j vaut 0)  c'est que tu n'as pas trouvé la valeur et tu retournes n, le code de Krotarox fait exactement cela sauf que lui il itère sur les indices inversés (d'ailleurs, on fait ça mieux avec range).

              Sinon, voici une solution courte même si non satisfaisante algorithmiquement parlant :

              def recherche(L, v):
                  return len(L)-1-L[::-1].index(v) if v in L else len(L)

              EDIT Canevas de code

              def recherche(L, v):
                  n=len(L)
                  j=n-1
                  for _ in range(n):
              
                      # code à compléter
              
                      j= j - 1
              
              print(recherche([2,3,5,5,4],12))




              -
              Edité par PascalOrtiz 28 avril 2021 à 23:29:12

              • Partager sur Facebook
              • Partager sur Twitter

              Trouver l'indice de la dernière occurence

              × 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