Aller au contenu

La course cycliste⚓︎

Une course cycliste se dispute.

course
source : Wikipedia

Chaque cycliste est identifié par un numéro de dossard : "Nadia-01", "Franck-64"

Les cyclistes se doublent les uns les autres durant la course.

Il peut arriver qu'un cycliste crève, et se fasse doubler par tous les autres coureurs et se retrouve à la dernière place, puis repart.

Les cyclistes sont rangés dans un tableau suivant leur position dans la course.

Exemple :

🐍 Script Python
course = ["Nadia-01", "Franck-64", "Thomas-31", "Elizabeth-22", "Laure-66"]
Dans cet exemple, Nadia est la première et Laure la dernière.

  • Écrire la fonction premier qui prend en paramètre le tableau qui stocke la course et qui renvoie le coureur en première position de la course.

    🐍 Console Python
    >>> premier(course)
    'Nadia-01'
    

  • Écrire la fonction dernier qui prend en paramètre le tableau qui stocke la course et qui renvoie le coureur en dernière position de la course.

    🐍 Console Python
    >>> dernier(course)
    'Laure-66'
    

  • Écrire la fonction position qui prend en paramètres le tableau qui stocke la course et le numéro de dossard et qui renvoie sa position dans la course. On supposera que le dossard donné est bien présent dans le classement. Attention : cette position correspond à l'indice du coureur dans le tableau. (ainsi le premier de la course aura la position 0 et non 1)

    🐍 Console Python
    >>> position(course, "Nadia-01")
    0
    >>> position(course, "Thomas-31")
    2
    

  • Écrire la fonction double qui prend en paramètres le tableau qui stocke la course et le dossard d'un coureur et modifie puis renvoie le tableau avec le coureur qui est passé devant le coureur précédent.

🐍 Console Python
>>> double(course, "Thomas-31")
['Nadia-01', 'Thomas-31', 'Franck-64', 'Elizabeth-22', 'Laure-66']
  • Écrire la fonction crevaison qui prend en paramètres le tableau qui stocke la course et le dossard d'un coureur qui a crevé et modifie puis renvoie le tableau. On partira du principe que tous les coureurs derrière le malchanceux coureur le doublent jusqu'à ce que le coureur soit le dernier. On utilisera obligatoirement les fonctions double et dernier.
🐍 Console Python
>>> crevaison(course, "Thomas-31")
['Nadia-01', 'Franck-64', 'Elizabeth-22', 'Laure-66', 'Thomas-31']
course = ["Nadia-01", "Franck-64", "Thomas-31", "Elizabeth-22", "Laure-66"]bksl-nlassert premier(course) == "Nadia-01"bksl-nlassert dernier(course) == "Laure-66"bksl-nlassert position(course, "Elizabeth-22") == 3bksl-nldouble(course, "Thomas-31")bksl-nlassert course == ["Nadia-01", "Thomas-31", "Franck-64", "Elizabeth-22", "Laure-66"]bksl-nlcrevaison(course, "Franck-64")bksl-nlassert course == ["Nadia-01", "Thomas-31", "Elizabeth-22", "Laure-66", "Franck-64"]bksl-nlcrevaison(course, "Franck-64")bksl-nlassert course == ["Nadia-01", "Thomas-31", "Elizabeth-22", "Laure-66", "Franck-64"]bksl-nlbksl-nlcourse = ["moi"]bksl-nlassert premier(course) == "moi"bksl-nlassert dernier(course) == "moi"bksl-nlassert position(course, "moi") == 3bksl-nlcrevaison(course, "moi")bksl-nlassert course == ["moi"]bksl-nlbksl-nl ∞/∞

def premier(classement):bksl-nl """renvoie le dossard du coureur en première position de la course."""bksl-nl ...bksl-nlbksl-nldef dernier(...):bksl-nl """renvoie le dossard du coureur en dernière position de la course."""bksl-nl ...bksl-nlbksl-nldef position(...):bksl-nl """renvoie la position d'un coureur identifié par son dossard"""bksl-nl ...bksl-nl bksl-nldef double(...):bksl-nl """modifie le tableau avec le coureur passé en paramètre qui est passé devant le coureur précédent."""bksl-nl ...bksl-nl bksl-nldef crevaison(...):bksl-nl """bksl-nl modifie le tableau avec le coureur passé en paramètre qui est passé en dernière positionbksl-nl après avoir été doublé par tous les autres coureurs.bksl-nl """bksl-nl ...bksl-nlbksl-nlcourse = ["Nadia-01", "Franck-64", "Thomas-31", "Elizabeth-22", "Laure-66"]bksl-nlassert premier(course) == "Nadia-01"bksl-nlassert dernier(course) == "Laure-66"bksl-nlassert position(course, "Elizabeth-22") == 3bksl-nldouble(course, "Thomas-31")bksl-nlassert course == ["Nadia-01", "Thomas-31", "Franck-64", "Elizabeth-22", "Laure-66"]bksl-nlcrevaison(course, "Franck-64")bksl-nlassert course == ["Nadia-01", "Thomas-31", "Elizabeth-22", "Laure-66", "Franck-64"]bksl-nlbksl-nldef premier(classement):bksl-nl """renvoie le dossard du coureur en première position de la course."""bksl-nl return classement[0]bksl-nlbksl-nlbksl-nldef dernier(classement):bksl-nl """renvoie le dossard du coureur en dernière position de la course."""bksl-nl dernierepy-undposition = len(classement) - 1bksl-nl return classement[dernierepy-undposition]bksl-nlbksl-nldef position(classement, dossard):bksl-nl """renvoie la position d'un coureur identifié par son dossard"""bksl-nl for positionpy-undcoureur in range(len(classement)):bksl-nl if classement[positionpy-undcoureur] == dossard:bksl-nl return positionpy-undcoureurbksl-nl bksl-nlbksl-nldef double(classement, dossard):bksl-nl """bksl-nl modifie le tableau avec le coureur (passé en paramètre) bksl-nl qui s'est positionné devant le coureur précédent.bksl-nl """bksl-nl positionpy-undcoureur = position(classement, dossard)bksl-nl coureurpy-unddevant = classement[positionpy-undcoureur - 1]bksl-nl classement[positionpy-undcoureur - 1] = classement[positionpy-undcoureur]bksl-nl classement[positionpy-undcoureur] = coureurpy-unddevantbksl-nl return classementbksl-nlbksl-nlbksl-nldef crevaison(classement, dossard):bksl-nl """bksl-nl modifie le tableau avec le coureur passé en paramètre qui est passé en dernière positionbksl-nl après avoir été doublé par tous les autres coureurs.bksl-nl """bksl-nl positionpy-undcoureur = position(classement, dossard)bksl-nl while dossard != dernier(classement):bksl-nl precedent = classement[positionpy-undcoureur + 1]bksl-nl double(classement, precedent)bksl-nl positionpy-undcoureur += 1bksl-nl return classementbksl-nlbksl-nl

A

{{ IDE('exo_corr') }}

On pouvait également opter pour la solution suivante :

🐍 Script Python
def dernier(classement):
    """renvoie le dossard du coureur en dernière position de la course."""
    return classement[-1]

Z

Retour en haut de la page