Parcours de tableaux/de tuples
Vous connaissez la maniรจre d'adresser un รฉlรฉment de tableau avec la syntaxe : nom_du_tableau[indice]
.
Indiquer numรฉriquement la valeur de l'indice suffit quand on ne manipule que quelques รฉlรฉments d'un tableau ou d'un tuple, mais qu'en est-il si on voulait adresser tous les รฉlรฉments
d'un tableau/tuple contenant un trรจs grand nombre d'รฉlรฉments ?
Pas trรจs pratique de faire la somme de tous les รฉlรฉments !!
Il existe heureusement une maniรจre d'adresser "automatiquement" les รฉlรฉments d'un tableau/tuple les uns aprรจs les autres, et cela correspond ร un parcours de tableau/tuple.
1. Parcours d'un tuple ou d'un tableau
Un tuple ou un tableau est, comme une chaรฎne de caractรจres, un objet itรฉrable, que l'on peut donc parcourir avec une boucle pour adresser chacun de ses รฉlรฉments les uns aprรจs les autres.
Comme pour les chaรฎnes, deux types de parcours existent :
1.1. Parcours par valeur
A chaque tour de boucle, la variable element prend comme valeur celles des รฉlรฉments successifs du tuple/tableau.
L'inconvรฉnient est que l'on n'adresse ร chaque fois que la valeur de l'รฉlรฉment, et pas son indice; pour adresser ces deux donnรฉes en mรชme temps, utiliser la fonction enumerate()
:
1.2. Parcours par indice
L'idรฉe est d'utiliser une boucle bornรฉe for .... in range()
, dont le compteur ira de 0 ( indice du premier รฉlรฉment du tableau ) ร len(tableau) - 1
( = indice du dernier รฉlรฉment ).
On se sert alors du compteur pour adresser successivement chaque รฉlรฉment du tableau :
1.3. Exemple : faire la somme des รฉlรฉments
Si on revient ร notre exemple du dรฉbut, pour faire la somme de tous les รฉlรฉments du tableau, il faut suivre l'algorithme suivant :
Soit en Python, avec un parcours par valeur :
Et avec un parcours par indice :
1.4. Parcours par indice ou par valeur ?
Pour simplement adresser les รฉlรฉments d'un tableau/tuple, on peut pratiquement toujours utiliser l'un ou l'autre indiffรฉremment !
Mais :
- Le parcours par valeur ne permet pas, dans le cas d'un tableau, de modifier ses รฉlรฉments; on utilisera plutรดt pour cela le parcours par indice ( voir chapitre suivant ).
- le parcours par valeur ne permet pas d'adresser plusieurs รฉlรฉments en mรชme temps, mais un seul, alors que le parcours par indice le permet, du moment que les indices de ces
รฉlรฉments sont en rapport les uns avec les autres; par exemple indices i et i+1, i-2 et i, etc...
2. Exercices
On utilisera dans ces exercices les mรฉthodes de parcours pour adresser successivement tous les รฉlรฉments des tuples et des tableaux suivants.
A vous de choisir entre le mieux adaptรฉ, un parcours par indice ou un parcours par valeur.
2.1. Produit des valeurs
Il s'agit ici de faire le produit ( la multiplication ) de tous les nombres prรฉsents dans un tableau.
- Complรฉter la fonction
produit
ci-dessous qui prend en paramรจtre un tableau tab d'entiers, et renvoie le produit de tous les entiers prรฉsents dans le tableau.
Par convention, si le tableau est vide on considรฉrera que le produit est รฉgal ร 1.
- Tester votre fonction grรขce au jeu de tests ci-dessous :
produit([2, 3, 2]) == 12
produit([1, 2, 3, 4, 5, 6]) == 720
produit([1, 1, 1, 1, 1, 1]) == 1
produit([1, 14, 32, 0, 15, 6]) == 0
produit([]) == 1
produit([7]) == 7
produit([12, 11, 3, 21, 5, 41, 4, 6, 4, 7]) == 1145612160
ืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืื
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Lien vers les RรPONSES
2.2. Inversion d'un tableau
Inverser un tableau, c'est mettre tous ses รฉlรฉments dans "l'autre sens" par rapport au "sens" initial :
- รฉcrire une fonction
inverse_tableau
, qui prend en paramรจtre un tableau t, et qui renvoie un nouveau tableau dont les รฉlรฉments sont inversรฉs par rapport au premier.
- tester votre fonction avec le jeu de tests suivant :
inverse_tableau([12, 56, 6, 1, 78, 96]) == [96, 78, 1, 6, 56, 12]
inverse_tableau([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) == [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
inverse_tableau([12]) == [12]
inverse_tableau([]) == []
ืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืื
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Lien vers les RรPONSES
2.3. Tableau triรฉ ?
Comment dรฉterminer si les รฉlรฉments d'un tableau d'entiers sont tous dans l'ordre croissant ( ou dรฉcroissant ? )
Simple : il suffit de parcourir les รฉlรฉments du tableau, en comparant chaque รฉlรฉment avec son prรฉcรฉdent ( ou son suivant, au choix...) : si, en un point du parcours, ces deux รฉlรฉments ne sont pas dans le "bon"
ordre, c'est que le tableau n'est pas ( complรจtement ) triรฉ...
รcrire une fonction est_trie
qui :
- prend comme paramรจtre un tableau d'entiers
- renvoie
True
ou False
selon que le tableau est complรจtement triรฉ ou pas, dans l'ordre croissant ou dรฉcroissant ( au choix )
ืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืื
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2.4. Statistiques sur l'ADN
Dans cet exercice, il faut parcourir les รฉlรฉments d'un tableau pour y tester la prรฉsence de certaines valeurs.
- รcrire une fonction
analyse_ADN
, qui prend un paramรจtre un tableau ( comme le tableau ADN ci-dessous ), et qui renvoie le nombre de fois oรน le "gรจne" 'A' apparaรฎt dans le tableau.
- Modifier la fonction pour qu'elle renvoie รฉgalement le nombre de fois oรน les "gรจnes" 'C', 'G' et 'T' apparaissent.
- Complรฉter la fonction pour qu'elle renvoie le pourcentage que reprรฉsente chaque "gรจne" sur le nombre total de "gรจnes".
ืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืื
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Lien vers les RรPONSES
2.5. Partage d'un tableau
On souhaite รฉcrire une fonction partage_tableau
qui :
- prend comme paramรจtres un tableau tab ( contenant des valeurs de type quelconque ), et un entier n de valeur strictement positive et infรฉrieure au nombre d'รฉlรฉment de la liste
- renvoie deux tableaux, le premier constituรฉ de la partie "gauche" du tableau d'origine, c'est ร dire les รฉlรฉments d'indice infรฉrieurs ou รฉgaux ร n, et l'autre de la partie "droite" ( indices supรฉrieurs ร n ).
Exemple : partage([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 4)
renvoie : [1, 2, 3, 4, 5], [6, 7, 8, 9, 10]
Si vous รชtes efficaces, votre fonction peut tenir en 3 lignes...
ืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืื
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Lien vers les RรPONSES
2.6. Compter les diffรฉrences
On dispose ici de deux tableaux de mรชme longueur. Il s'agit de calculer le nombre de diffรฉrences entre les deux tableaux.
Par exemple avec :
โ il y a trois diffรฉrences entre les deux tableaux : aux indices 2, 5 et 8.
- Complรฉter la fonction compter_
differences
ci-dessous qui prend en paramรจtres deux tableaux t1 et t2 de mรชme longueur,
et renvoie le nombre de diffรฉrences entre les deux tableaux.
- Tester la fonction avec les paires de tableaux proposรฉes.
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
ืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืื
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Lien vers les RรPONSES
2.7. Moyenne coefficientรฉe
On dispose ici de deux tableaux de mรชme longueur : un tableau de notes (sur 20) et un tableau de coefficients.
Il s'agit de calculer la moyenne coefficientรฉe correspondante.
Par exemple avec :
โโla moyenne sera calculรฉe ainsi : (12*1 + 15*2 + 14*1 + 18*4)/(1 + 2 + 1 + 4) = 16.
- Complรฉter la fonction
moyenne_coefficient
ci-dessous qui prend en paramรจtre deux tableaux non vides notes et coeffs et renvoie
la moyenne coefficientรฉe correspondante.
- Tester votre fonction avec les tableaux proposรฉs.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืื
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Lien vers les RรPONSES
2.8. Dรฉnivelรฉes
La dรฉnivelรฉe entre deux points d'un parcours correspond ร la diffรฉrence entre les altitudes de ces deux points.
En randonnรฉe cycliste, pรฉdestre ou ร skis, on dรฉfinit les dรฉnivelรฉs positif et nรฉgatif cumulรฉs :
- le dรฉnivelรฉ positif cumulรฉ correspond au ยซnombre total de mรจtres en hauteurยป qui ont รฉtรฉ montรฉs du dรฉbut ร la fin du parcours,
- le dรฉnivelรฉ nรฉgatif cumulรฉ correspond au ยซnombre total de mรจtres en hauteurยป qui ont รฉtรฉ descendus du dรฉbut ร la fin du parcours.
Par exemple, soit un tableau dont chaque รฉlรฉment reprรฉsente l'altitude d'un point d'un parcours de randonnรฉe : [7, 4, 3, 6, 7, 4, 3, 1, 8]
.
โ on rencontre trois dรฉnivelรฉs positifs lors de son parcours :
- +3 pour passer de la valeur 3 ร la valeur 6,
- +1 pour passer de la valeur 6 ร la valeur 7,
- +7 pour passer de la valeur 1 ร la valeur 8;
soit un dรฉnivelรฉ positif cumulรฉ de +11.
Et le dรฉnivelรฉ nรฉgatif cumulรฉ vaut quant ร lui : -3-1-3-1-2 = -10.
Plus gรฉnรฉralement, dans un tableau tab de taille n รฉlรฉments, le dรฉnivelรฉ ร l'indice i est รฉgal ร tab[i+1] - tab[i]
(ร condition que
l'indice i+1 existe).
Remarque : on considรฉrera que dans un tableau vide ou de taille 1, le dรฉnivelรฉ cumulรฉ est รฉgal ร zรฉro.
- Voici le schรฉma d'un tableau tab de taille n :
---------------------------------------------
| indices | 0 | 1 | 2 | 3 | ... | n-2 | n-1 |
---------------------------------------------
| valeurs | . | . | . | . | ... | . | . |
---------------------------------------------
Le plus grand indice possible est donc n-1.
Pour avoir le droit d'รฉcrire tab[i+1] - tab[i]
avec un tableau tab de taille n, quelle est alors la plus grande valeur de i possible :
n-2, n-1, n ou n+1 ?
- Complรฉter la fonction
compter_deniveles
ci-dessous qui prend en paramรจtre un tableau alt de valeurs reprรฉsentant des altitudes, et renvoie un tuple
de deux รฉlรฉments correspondant aux dรฉnivelรฉs positif cumulรฉ et nรฉgatif cumulรฉ.
Le parcours de tab sera fait par indice.
- Tester votre fonction grรขce au jeu de tests ci-dessous :
compter_deniveles([1, 2, 3, 4, 5]) == (4, 0
)
compter_deniveles([5, 4, 3, 2, 1]) == (0, -4)
compter_deniveles([0, 10, 0, 10]) == (20, -10)
compter_deniveles([0, 10, 0, 10, 10, 10, 10, 0]) == (20, -20)
compter_deniveles([3, 7, 8, 9, 1, 0, 7, 8, 9, 3, 7, 8, 9, 4, 6, 1, 0, 0, 9, 5, 7, 34, 4, 5, 6, 7, 8, 9]) == (66, -60)
compter_deniveles([]) == (0, 0
)
compter_deniveles([5]) == (0, 0)
ืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืืื
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Lien vers les RรPONSES