La course cycliste⚓︎
Une course cycliste se dispute.
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.
Les coureurs sont identifiés par leur prénom et leurs positions sont stockées de façon ordonnée dans un tableau.
Exemple :
course = ["Nadia-01", "Franck-64", "Thomas-31", "Elizabeth-22", "Laure-66"]
- Créer 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.
>>> premier(course)
"Nadia-01"
- Créer 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.
>>> dernier(course)
"Laure-66"
- Créer la fonction
position
qui prend en paramètre le tableau qui stocke la course et le numéro de dossard et qui renvoie sa position dans la course.
>>> position("Thomas-31")
2
- Créer la fonction
double
qui prend en paramètre le tableau qui stocke la course et le dossard d'un coureur et modifie le tableau avec le coureur qui est passé devant le coureur précédent.
>>> double(course, "Franck-64")
>>> premier(course)
"Franck-64"
- Créer la fonction
crevaison
qui prend en paramètre le tableau qui stocke la course et le dossard d'un coureur qui a crevé et modifie 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 fonctionsdouble
etdernier
.
>>> crevaison(course, "Thomas-31")
>>> dernier(course)
"Thomas-31"
def premier(classement):bksl-nl ...bksl-nlbksl-nldef dernier(...):bksl-nl ...bksl-nl bksl-nldef double(...):bksl-nl ...bksl-nl bksl-nldef crevaison(...):bksl-nl ...bksl-nlbksl-nldef premier(classement):bksl-nl return classement[0]bksl-nlbksl-nlbksl-nldef dernier(classement):bksl-nl dernièrepy-undposition = len(classement)-1bksl-nl return classement[dernièrepy-undposition]bksl-nlbksl-nlbksl-nldef double(classement, position):bksl-nl assert position > 0, "Le premier ne peut doubler personne"bksl-nl assert position < len(classement), "Pas assez de coureurs"bksl-nl coureurpy-unddouble = classement[position-1]bksl-nl classement[position-1] = classement[position]bksl-nl classement[position] = coureurpy-unddoublebksl-nlbksl-nlbksl-nldef crevaison(classement, position):bksl-nl assert position < len(classement), "Pas assez de coureurs"bksl-nl malchanceux = classement[position]bksl-nl while malchanceux != dernier(classement):bksl-nl double(classement, position+1)bksl-nl position += 1bksl-nlbksl-nlbksl-nl
A
Z