Codage Python "Erreur d'effet de bords" :

TSR -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    peux-tu partager du texte, et pas des images?
    tiens compte de ceci quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
    0
    1. TSR4810 Messages postés 4 Statut Membre
       
      j'ai crée un nouveau topic avec ce compte pour poster les img
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > TSR4810 Messages postés 4 Statut Membre
         
        Inutile de créer une nouvelle discussion. As-tu lu ceci?
        0
  2. bazfile Messages postés 58487 Date d'inscription   Statut Modérateur Dernière intervention   20 266
     
    Bonjour.
    Inutile de faire des triplons continue uniquement sur ce post
    0
  3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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?
    0
  4. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    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
    0