###(Dés-)Active le code après la ligne # Tests (insensible à la casse) (Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : ∞/∞
Lors d'un parcours par valeur, on n'a pas accès à l'indice et uniquement à la valeur. Pour choisir entre les deux, il faut donc se poser la question suivante : Est-ce que j'ai besoin de connaître l'indice de la valeur que je regarde ?
Si la réponse est oui, il faut faire un parcours par indice.
Si la réponse est non, vous pouvez utiliser une parcours par valeur. Mais un parcours par indice fonctionnerait aussi.
Exercice 1 : compter(symbole,texte)
Compléter le code de la fonction compter qui prend en paramètres une texte d'un seul caractère symbole ainsi qu'un texte texte et qui renvoie le nombre de fois où symbole apparaît dans texte.
Compléter le code de la fonction position qui prend en paramètres un entier val ainsi qu'une liste d'entiers nombres et renvoie l'indice de la première occurrence de val dans nombres s'il y en a une et -1 sinon.
Il est parfois utile de parcourir une liste Python, ou un texte, en partant du dernier élément et en allant vers le premier. On rappelle que l'indice du dernier élément est n-1, où n est la longueur de la liste ou du texte.
On peut parcourir les indices dans l'ordre inverse en utilisant les paramètres supplémentaires de range. Pour rappel, range(de,vers,pas) part de de et va de pas en pas jusqu'à vers, en s'arrêtant juste avant de l'atteindre. En mettant -1 pour le pas, on parcourt les nombres dans l'ordre inverse.
defparcours_inverse1(donnees):foriinrange(len(donnees)-1,-1,-1):# on part du dernier indice print(i,donnees[i])
Si on ne veut pas utiliser les paramètres supplémentaires de range, il faut calculer l'indice de l'élément regardé à chaque tour de boucle. Si on note i la variable de boucle, n la longueur de la liste ou du texte, alors à chaque tour de boucle, il faut regarder l'élément d'indice n-1-i.
###(Dés-)Active le code après la ligne # Tests (insensible à la casse) (Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : ∞/∞
Vous pouvez utiliser ces parcours, ou pas, pour l'exercice suivant.
Exercice 3 : derniere_position(val,nombres)
Compléter le code de la fonction derniere_position qui prend en paramètres un entier val ainsi qu'une liste d'entiers nombres et renvoie l'indice de la dernière occurrence de val dans nombres s'il y en a une et -1 sinon.
Compléter le code de la fonction indice_egal_valeurs qui prend en paramètre une liste d'entiers nombres et renvoie True s'il existe un indice i tel que nombres[i]==i et False sinon.
Compléter le code de la fonction moyenne qui prend en paramètres une liste non vide de nombres valeurs et renvoie la moyenne de ces nombres. On n'utilisera pas la fonction len.
Comparaison de nombres réels
On rappelle que la représentation des nombres réels en Python est basée sur le principe de la virgule flottante et qu'à cause de cela, deux expressions mathématiquement égales ne donnent pas forcément le même résultat en Python.
Pour vérifier le résultat de la fonction moyenne avec le résultat attendu, nous utiiserons la fonction indiscernables qui prend deux nombres et renvoie un booléen indiquant si la valeur absolue de leur différence est inférieure à \(10^{-15}\).
En mathématiques, on appelle cette différence la distance entre les deux nombres. On vérifie donc que leur distance est infinitésimale.
Exemples
>>> 0.1*3==0.3# Erreur de virgule flottante classiqueFalse>>> indiscernables(0.1*3,0.3)True
Compléter le code de la fonction moyenne_ponderee qui prend en paramètres une liste non vide valeurs de couples de nombres (note,coeff) et renvoie la moyenne pondérée correspondant à ces notes. On suppose que tous les coefficients sont positifs et qu'il y a au moins un coefficient non nul.
Calcul d'une moyenne pondérée
Pour calculer une moyenne pondérée, il faut aditionner le produit de chacune des notes avec le coefficient correspondant et diviser par la somme des coefficients.
Par exemple, avec 5 notes \(n_1\), \(n_2\), ..., \(n_5\) et les coefficients correspondants \(c_1\), \(c_2\), ..., \(c_5\), la moyenne pondérée est :
Compléter le code de la fonction effectifs qui prend en paramètre une liste donnees contenant des entiers ou des textes et qui renvoie un dictionnaire qui associe à chaque valeur apparaissant dans donnees le nombre de fois où elle y apparaît.
Par exemple dans la liste [4,1,2,4,2,2,6] il y a une fois la valeur 1, trois fois la valeur 2, deux fois la valeur 4 et une fois la valeur 6. Le résultat attendu pour cette liste sera donc le dictionnaire {1:1,2:3,4:2,6:1}.
On rappelle aussi que dans un dictionnaire, l'ordre dans lequel on donne les valeurs n'a pas d'importance. Ainsi, les dictionnaires {1:1,2:3,4:2,6:1} et {4:2,1:1,2:3,6:1} sont égaux.
# Tests
(insensible à la casse)(Ctrl+I)