Aller au contenu

Parcourir les éléments d'un t-uplet

Comme pour les chaînes de caractères et les tableaux, il existe trois méthodes pour parcourir les valeurs d'un t-uplet.

Parcours par les valeurs

On peut parcourir élément par élément d'un t-uplet avec for ... in ...:

>>> uplet = ('informatique', 'python', 'réseau', 'javascript')
>>> for mot in uplet:
...     print(mot)
... 
informatique
python
réseau
javascript

Parcours par les indices

On peut parcourir le t-uplet indice par indice grâce à for ... in range(len(...)):

>>> uplet = ('informatique', 'python', 'réseau', 'javascript')
>>> for indice in range(len(uplet)):
...     print(indice, uplet[indice])
... 
0 informatique
1 python
2 réseau
3 javascript

Parcours des indices et valeurs

On peut aussi parcourir le t-uplet en utilisant à la fois les indices et les valeurs des éléments grâce à for ... in enumerate(...):

>>> uplet = ('informatique', 'python', 'réseau', 'javascript')
>>> for indice, valeur in enumerate(uplet):
...     print(f"L'élément d'indice {indice} a pour valeur {valeur}.")
... 
L'élément d'indice 0 a pour valeur informatique.
L'élément d'indice 1 a pour valeur python.
L'élément d'indice 2 a pour valeur réseau.
L'élément d'indice 3 a pour valeur javascript.

Exemples

  1. Complétez la définition de la fonction signes() qui prend pour paramètre un t-uplet t contenant des eniers et renvoie un t-uplet de même longueur contenant un 0 lorsque l'élément correspondant de t est strictement positif, un 1 sinon.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    def signes(t):
        """
        t – tuple, t-uplet d’entiers
        Sortie: tuple – t-uplet de même longueur que t contenant :
                0 si l’élément de même rang dans t est strictement positif
                1 si l’élément de même rang dans t est négatif
        >>> signes( (3, -2, -6, 0) )
        (0, 1, 1, 1)
        """
    
    Une solution
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    def signes(t):
        """
        t – tuple, t-uplet d’entiers
        Sortie: tuple – t-uplet de même longueur que t contenant :
                0 si l’élément de même rang dans t est strictement positif
                1 si l’élément de même rang dans t est négatif
        >>> signes( (3, -2, -6, 0) )
        (0, 1, 1, 1)
        """
        reponse = ()                # Création d’un tuple « vide »
        for valeur in t:
            if valeur > 0:
                reponse = reponse + (0, )
            else:
                reponse = reponse + (1, )
        return reponse
    
  2. Donnez la définition par compréhension d'un t-uplet qui génère 20 entiers aléatoires compris entre -50 et 50 (après avoir importé la module random).

    Une solution
    1
    2
    3
    from random import randint
    
    uplet = tuple( randint(-50, 50) for i in range(20) )
    
  3. Regroupez les deux questions dans un unique programme afin de tester la fonction signes() dans le « main » à l'aide de t-uplets générés aléatoirement (cf. question 2.).

    Une solution
     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
    from random import randint
    
    def signes(t):
        """
        t – tuple, t-uplet d’entiers
        Sortie: tuple – t-uplet de même longueur que t contenant :
                0 si l’élément de même rang dans t est strictement positif
                1 si l’élément de même rang dans t est négatif
        >>> signes( (3, -2, -6, 0) )
        (0, 1, 1, 1)
        """
        reponse = ()                # Création d’un tuple « vide »
        for valeur in t:
            if valeur > 0:
                reponse = reponse + (0, )
            else:
                reponse = reponse + (1, )
        return reponse
    
    if __name__ == '__main__':
        import doctest
        doctest.testmod()
    
        # Cinq tests avec t-uplets générés aléatoirement
        for k in range(5):
            uplet = tuple( randint(-50, 50) for i in range(20) )
            print(f"Le t-uplet généré est {uplet}")
            print(f"Le signe des éléments du t-uplet sont {signes(uplet)}")
            print()