Codage Python "Erreur d'effet de bords" :

Bonjour,

Je viens ici, car après de nombreuses recherches, je ne comprends pas pourquoi mon programme à des problème d'effet de bords. Je vous joins les capture d'écran du programe et de l'erreur.

Merci d'avance et bonne journée à vous tous.

Images :

4 réponses

  1. Modérateur
    Bonjour.
    Inutile de faire des triplons continue uniquement sur ce post
    1. Contributeur
      en dehors de la plateforme d'exercice, teste ceci:
      ld=[4, 7, 12, 4, 4, 0, 4, 5]
      print("ld avant:",ld)
      print(supprime(ld, 4))
      print("ld après:",ld)

      qu'observes-tu?
      1. Modérateur
        Bonjour,

        Merci comme dit précédemment de copier coller le code intégral dans un message en utilisant les balises de codes (4e bouton au dessus de la boîte dans laquelle tu tapes ton message), ce sera plus simple pour tout le monde.

        Pour la plupart des fonctions, tu te compliques inutilement la tâche. Aucune ne modifie (ou devrait modifier) la liste de départ. Il suffit d'itérer dessus, de construire le résultat, et de le retourner une fois qu'il a été intégralement trouvé. Il existe beaucoup de fonctions natives en python qui réalisent plus ou moins directement ce que tu veux.

        Étant donné un itérable (e.g., une liste) :
        • len
          retourne le nombre d'éléments;
        • min
          retourne la valeur minimum ;
        • max
          retourne la valeur maximum ;
        • sum
          retourne la somme ;
        • enumerate
          permet d'envelopper un itérable (e.g, une liste) de sorte à récupérer l'index de l'élément courant.


        Quelques exemples

        def min_pair(l):
            return min(x for x in l if x % 2 == 0)
        
        def indice_de(x, l):
            for (i, y) in enumerate(l):
                if x == y:
                    return i
            return None


        Remarques

        Dans le cas de
        min_pair
        , attention car si ta liste ne comprend aucune valeur paire, python lèvera une exception. Si tu souhaites rattraper cette exception
        ValueError
        pour retourner la valeur
        None
        dans ce genre de situation, utilise un bloc
        try ... except ...
        .

        def min_pair(l):
            try:
                return min(x for x in l if x % 2 == 0)
            except ValueError:
                return None