IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Liste chaines en Python - Besoin d'aide pour comprendre


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 4
    Par défaut Liste chaines en Python - Besoin d'aide pour comprendre
    Bonjour à toutes et à tous. Je n'arrive pas à comprendre pourquoi j'ai ce message d'erreur ni même ce que veux dire (str = string ?)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AttributeError: 'str' object has no attribute 'tete'

    J'essai de créer une liste chainée mais je m'y prends mal quelque part et je n'arrive pas à savoir où. (La ligne en erreur c'est la ligne 26).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    class Cellule:
     
        def __init__(self):
            self.valeur = None
            self.suivant = None
     
     
    class Sequence:
     
        def __init__(self):
            self.tete = None
     
        def creation_liste_chaine(self):
     
            liste = list(testtext) # Je convertis ma chaine de string en une liste de lettre
            max = len(liste)-1
     
            avant = None # Je défini un pointeur qui sera predecesseur
            for i in range(0,max):
     
                cel = Cellule() # Je créé une cellule vide
     
                if avant == None: # Si mon predecesseur est vide
                    cel.valeur = liste[i] # Je lui associe une valeur
                    avant = cel # J'enregistre ma cellule comme prédecesseur
                    cel.suivant = self.tete # Je chaine avec ma tête
                    self.tete = cel #<--- ? faut il rechainer encore une fois ?
     
                else:
                    cel.valeur = liste[i]
                    avant.suivant = cel
     
     
     
    testtext = \
    "AB\
     CD\
    EF\
    GH\
    IJ\
    "
    Est-ce que quelqu'un pourrait m'expliquer où est on mon erreur svp ?
    PAr avance merci

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 736
    Par défaut
    Salut,

    Citation Envoyé par CaMarchePas() Voir le message
    J'essai de créer une liste chainée mais je m'y prends mal quelque part et je n'arrive pas à savoir où. (La ligne en erreur c'est la ligne 26).
    Si l'accès a self.tete plante en disant que 'str' object has no attribute 'tete', c'est que "self" est un str(ing). Et comme votre code ne montre pas comment est appelée la méthode "creation_liste_chaine"...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 061
    Par défaut
    Bonjour,

    Je n'arrive pas à comprendre pourquoi j'ai ce message d'erreur ni même ce que veux dire (str = string ?)
    Je vous arrête tout de suite, il faut prendre un tutoriel. Commencer les classes et ne pas connaître les types de base du langage c'est absolument impossible...

    AttributeError: 'str' object has no attribute 'tete'
    Là encore une fois ça pose un problème, on apprend pas les classes sans savoir de quoi elle se compose...

    Dire qu'un objet string n'a pas d'attribut tete devrait faire tilt.

    ------------------------------------------------

    Mis à part cela, comment faîtes vous le test pour arriver à cette erreur ?
    Je ne vois pas où le problème se pose... dans votre code actuellement écrit.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 4
    Par défaut
    Je l'appelle par la dernière ligne du code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    class Cellule:
     
        def __init__(self):
            self.valeur = None
            self.suivant = None
     
     
    class Sequence:
     
        def __init__(self):
            self.tete = None
     
        def creation_liste_chaine(self):
     
            liste = list(testtext) # Je convertis ma chaine de string en une liste de lettre
            max = len(liste)-1
     
            avant = None # Je défini un pointeur qui sera predecesseur
            for i in range(0,max):
     
                cel = Cellule() # Je créé une cellule vide
     
                if avant == None: # Si mon predecesseur est vide
                    cel.valeur = liste[i] # Je lui associe une valeur
                    avant = cel # J'enregistre ma cellule comme prédecesseur
                    cel.suivant = self.tete # Je chaine avec ma tête
                    self.tete = cel #<--- ? faut il rechainer encore une fois ?
     
                else:
                    cel.valeur = liste[i]
                    avant.suivant = cel
     
     
     
    testtext = \
    "AB\
     CD\
    EF\
    GH\
    IJ\
    "
     
    Sequence.creation_liste_chaine(testtext)
    Je vais donc m'atteler à trouver de la documentation sur les class si mon problème vient de là

  5. #5
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 061
    Par défaut
    creation_liste_chaine ne prend pas d'argument. Surpris ? Voir le tutoriel sur les classes, effectivement ça vient de là

    EDIT: selon l'utilisation que vous faîtes de votre classe, le décorateur classmethod semble plus adapté, mais quelques modifications seront à faire niveau syntaxes.

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 736
    Par défaut
    Citation Envoyé par CaMarchePas() Voir le message
    Je l'appelle par la dernière ligne du code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
     
    Sequence.creation_liste_chaine(testtext)
    Je vais donc m'atteler à trouver de la documentation sur les class si mon problème vient de là
    Dans votre premier post, le code s'arrêtait à la ligne 41.

    Cela étant, Sequence().creation_liste_chaine() pourrait fonctionner sans erreur: on crée une instance et on appelle dans la foulée la méthode creation_liste_chaine sans paramètre (puisqu'elle n'en prend pas).

    Mais çà ne va pas vous aider beaucoup car le reste du code est incompréhensible! Vous cherchez à faire quoi? transformer une séquence de caractères en une suite de cellules chaînées? Essayez d'y arriver d'abord en décortiquant les étapes sur une feuille de papier!

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 4
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Dans votre premier post, le code s'arrêtait à la ligne 41.

    Cela étant, Sequence().creation_liste_chaine() pourrait fonctionner sans erreur: on crée une instance et on appelle dans la foulée la méthode creation_liste_chaine sans paramètre (puisqu'elle n'en prend pas).

    Mais çà ne va pas vous aider beaucoup car le reste du code est incompréhensible! Vous cherchez à faire quoi? transformer une séquence de caractères en une suite de cellules chaînées? Essayez d'y arriver d'abord en décortiquant les étapes sur une feuille de papier!

    - W
    Oui c'est ce que j'essai de faire en vain, créer une liste chainée a partir d'une liste string.
    J'ai déjà essayé de décortiquer sur une feuille de papier mais en vain, d'où le fait que je suis venu demander de l'aide parce que je n'avançais plus.

    Le problème a été mis en évidence, je n'ai pas les connaissances nécessaire pour créer un code avec des class.

    Merci à vous

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 736
    Par défaut
    Citation Envoyé par CaMarchePas() Voir le message
    J'ai déjà essayé de décortiquer sur une feuille de papier mais en vain, d'où le fait que je suis venu demander de l'aide parce que je n'avançais plus.
    Sûr que si vous n'arrivez déjà pas à visualiser ce que vous voulez obtenir sur une feuille de papier, on ne va pas pouvoir vous aider.
    Mais alors ce n'est pas juste avec les class que vous avez un soucis.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 4
    Par défaut
    Oui j'ai des soucis dans d'autres domaines. Je suis né avec une maladie (cérébral) invalidante mais j'ai au moins le mérite de me battre pour avancer. Vos sous-entendus me touche profondément car ils sont blessant mais néanmoins réaliste et au reflet de la société.

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 736
    Par défaut
    Citation Envoyé par CaMarchePas() Voir le message
    Oui j'ai des soucis dans d'autres domaines. Je suis né avec une maladie (cérébral) invalidante mais j'ai au moins le mérite de me battre pour avancer. Vos sous-entendus me touche profondément car ils sont blessant mais néanmoins réaliste et au reflet de la société.
    J'en suis désolé pour vous mais il n'y a aucun sous entendu.

    Vous programmez un ordinateur pour faire automatiquement (et rapidement) ce que vous pouvez faire (lentement) sur une feuille de papier.
    Alors c'est sur que sur une feuille de papier vous n'allez pas mouliner plus que 2/3 caractères. Mais çà vous permettra de comprendre les différentes étapes et le résultat à obtenir.

    "coder", c'est juste faire faire ce même boulot par l'ordinateur.... et vérifier qu'il fera ce que vous espérez. Ce qui passe par faire afficher quelque chose à votre programme histoire de vérifier/valider que le résultat ressemble à ce que vous attendez.

    Et çà désolé mais je sais ce que je veux et je contrôle que çà le fait est le b.a.ba.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par CaMarchePas() Voir le message
    Oui c'est ce que j'essai de faire en vain, créer une liste chainée a partir d'une liste string.
    Un peu bizarre comme TP car Python offre des outils natifs permettant d'insérer dans des listes.

    En effet, le principal avantage d'une liste chainée est de pouvoir insérer un élément n'importe où sans avoir à décaler tout le reste. Mais les listes de base python permettent déjà d'insérer un élément où on veut (et quelque chose me dit que les listes Python sont elles-même chainées en interne justement pour pouvoir faire ça facilement). Donc pourquoi faire mal ce qui n'est pas besoin de faire car déjà existant ?

    Mais bon, pourquoi pas...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    #/usr/bin/env python3
    # coding: utf-8
     
    class Cellule:
    	def __init__(self, v=None):
    		self._valeur=v
    		self._suivant=None
    	def __str__(self):
    		return "id=%x, v=%s, next=%s" % (
    			id(self),
    			self._valeur,
    			"%x" % id(self._suivant) if self._suivant is not None else "None",
    		)
    	# __str__()
    # class Cellule
     
    class Sequence:
    	def __init__(self):
    		self.__tete=None
    		self.__len=0
     
    	def creation_liste(self, txt):
    		for c in txt:
    			# On crée une nouvelle cellule
    			cel=Cellule(c)
    			self.__len+=1
     
    			# La cellule se met en tête
    			cel._suivant=self.__tete
    			self.__tete=cel
    		# for
    	# creation_liste()
     
    	def __str__(self):
    		s=""
    		c=self.__tete
    		while c is not None:
    			s+="%s\n" % c
    			c=c._suivant
    		# while
    		return s + "(len=%d)" % self.__len
    	# __str__()
    # class Sequence
     
    seq=Sequence()
    seq.creation_liste("abcdefghijkl")
    print(seq)

    PS: super le pseudo. On sent la motivation pour progresser...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  12. #12
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 736
    Par défaut
    Salut,

    Citation Envoyé par Sve@r Voir le message
    Mais les listes de base python permettent déjà d'insérer un élément où on veut (et quelque chose me dit que les listes Python sont elles-même chainées en interne justement pour pouvoir faire ça facilement).
    Pour info. en CPython, c'est un tableau de pointeurs redimensionné si besoin.
    Voir la FAQ Python.
    Et si on insère/supprime un élément à la i-ème position, il va falloir décaler tous les éléments suivants de +/- 1 et constater une dégradation des performances notables avec la taille de la liste (si on supprime/ajoute vers le début plutôt qu'à la fin).

    Mais on peut utiliser les listes de bases pour faire des listes chaînées en posant que ses éléments sont des listes à 2 items, le premier étant la valeur et le second l'élément suivant.
    Le chaînage des valeurs 1, 2, 3 devrait s'afficher sous la forme: [1, [2, [3, []]]] ou [3, [2, [1, []]]].

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #13
    Membre Expert
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 513
    Par défaut
    Bonjour CaMarchePas().

    Dans ton code, je vois à la fois un problème de connaissance du langage Python et un problème d'algorithmie.

    Concernant le langage, quand je lis creation_liste_chaine(self) et Sequence.creation_liste_chaine(testtext), je vois que les bases sur les méthodes d'instance ne sont pas maîtrisées, donc il faut d'abord t'exercer dessus sur un exemple plus simple. Ensuite, une fois que tu as bien saisi le concept et la syntaxe, tu peux t'attaquer aux listes chaînées.

    Pour l'algorithmie, si on a du mal, il faut essayer de décomposer le problème en sous-problèmes et avancer petit à petit, en utilisant quelques astuces pour que les tests soient faciles.

    Par exemple, voici un début de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    class Cellule:
     
        def __init__(self, valeur, suivante):
            self.valeur = valeur
            self.suivante = suivante
     
     
    class ListeChainee:
     
        def __init__(self, tete):
            self.tete = tete
     
        def convertion_en_liste(self):
            resultat = []
            cellule = self.tete
            while cellule is not None:
                resultat.append(cellule.valeur)
                cellule = cellule.suivante
            return resultat
     
     
    cellule_3 = Cellule(valeur=3, suivante=None)
    cellule_2 = Cellule(valeur=2, suivante=cellule_3)
    cellule_1 = Cellule(valeur=1, suivante=cellule_2)
    liste_chainee = ListeChainee(tete=cellule_1)
     
    print(liste_chainee.convertion_en_liste())
    Pour l'instant, ce code permet juste de construire une liste chaînée en bricolant les cellules une par une et de convertir une liste chaînée en liste. L'avantage de la méthode convertion_en_liste est qu'elle permet de faciliter les tests. Cela vaut à la fois pour les tests ponctuels et les tests automatisés.

    À présent, attaquons-nous à ton problème qui consiste à transformer ta chaîne "ABCDEFGHIJ" en une liste chaînée dont chaque cellule contient une de ces lettres. Ce problème peut se décomposer en sous-problèmes :
    Dans un premier temps, dans la classe ListeChainee, tu peux ajouter une méthode ajouter_au_debut(self, valeur) capable d'ajouter une seule valeur. Une fois que tu auras réussi, pour transformer ta chaîne "ABCDEFGHIJ" en une liste chaînée, il te suffira d'écrire un code qui appelle ajouter_au_debut dans une boucle.

    Comment coder et tester ajouter_au_debut ?

    Voici une version complétée du code avec deux tests automatisés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    class Cellule:
     
        def __init__(self, valeur, suivante):
            self.valeur = valeur
            self.suivante = suivante
     
     
    class ListeChainee:
     
        def __init__(self, tete):
            self.tete = tete
     
        def convertion_en_liste(self):
            resultat = []
            cellule = self.tete
            while cellule is not None:
                resultat.append(cellule.valeur)
                cellule = cellule.suivante
            return resultat
     
        def ajouter_au_debut(self, valeur):
            self.tete = Cellule(valeur=valeur, suivante=None)  # CODE FAUX À CHANGER
     
     
    cellule_3 = Cellule(valeur=3, suivante=None)
    cellule_2 = Cellule(valeur=2, suivante=cellule_3)
    cellule_1 = Cellule(valeur=1, suivante=cellule_2)
    liste_chainee = ListeChainee(tete=cellule_1)
     
    print(liste_chainee.convertion_en_liste())
     
     
    import unittest
     
     
    class TestListeChainee(unittest.TestCase):
     
        def test_ajouter_au_debut_1(self) -> None:
            liste_chainee = ListeChainee(tete=None)
            liste_chainee.ajouter_au_debut(1)
            self.assertEqual(liste_chainee.convertion_en_liste(), [1])
     
        def test_ajouter_au_debut_2(self) -> None:
            liste_chainee = ListeChainee(tete=None)
            liste_chainee.ajouter_au_debut(2)
            liste_chainee.ajouter_au_debut(1)
            self.assertEqual(liste_chainee.convertion_en_liste(), [1, 2])
     
     
    unittest.main()
    Dans ce code, pour la méthode ajouter_au_debut, j'ai écrit un code volontairement faux qui passe le test test_ajouter_au_debut_1 mais qui ne passe pas le test test_ajouter_au_debut_2. Si tu exécutes le code, cela devrait afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    [1, 2, 3]
    .F
    ======================================================================
    FAIL: test_ajouter_au_debut_2 (__main__.TestListeChainee)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "C:\test\test.py", line 48, in test_ajouter_au_debut_2
        self.assertEqual(liste_chainee.convertion_en_liste(), [1, 2])
    AssertionError: Lists differ: [1] != [1, 2]
     
    Second list contains 1 additional elements.
    First extra element 1:
    2
     
    - [1]
    + [1, 2]
     
    ----------------------------------------------------------------------
    Ran 2 tests in 0.002s
     
    FAILED (failures=1)
    Si tu corriges comme il faut le code de la méthode ajouter_au_debut, cela affichera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [1, 2, 3]
    ..
    ----------------------------------------------------------------------
    Ran 2 tests in 0.001s
     
    OK
    L'avantage d'automatiser les tests est que, quand on modifie le code, on peut vérifier facilement si les tests qui marchaient avant continuent de marcher après la modification du code.

    Bonne chance pour la suite.

Discussions similaires

  1. [Python 3.X] Python: besoin d'aide pour un petit programme
    Par Intrepid13 dans le forum Général Python
    Réponses: 9
    Dernier message: 14/10/2015, 19h19
  2. [Python 3.X] Python: besoin d'aide pour un petit programme
    Par Intrepid13 dans le forum Général Python
    Réponses: 2
    Dernier message: 11/10/2015, 04h21
  3. besoin d'aide pour comprendre un exo simple de java
    Par chadel dans le forum Langage
    Réponses: 2
    Dernier message: 16/03/2007, 23h27
  4. [MySQL] besoin d'aide pour comprendre les injections sql
    Par cassy dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 28/01/2007, 14h21
  5. Besoin d aide pour comprendre un code
    Par litlebasic dans le forum Delphi
    Réponses: 4
    Dernier message: 22/06/2006, 13h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo