TP9 - Boucle while ¶
Activité¶
A l'aide d'une boucle for, définir une fonction position(x, lst) qui retourne la position (indice) de l'élément x dans la liste lst.
# définition avec une boucle for
# test
lst = [2, 5, 3, 1, 18, 23, 6, 13, 12, 15, 7, 10]
position(5, lst)
Que peut-on reprocher à cette définition ?
On peut l'améliorer grâce à une boucle while.
Compléter la définition suivante.
# définition avec une boucle while
def position2(x, lst):
trouve = False
i = 0
while ###:
if ###:
trouve = True
else:
###
return ###
# test
lst = [2, 5, 3, 1, 18, 23, 6, 13, 12, 15, 7, 10]
position2(5, lst)
Que se passe-t-il avec l'appel suivant ?
position2(8, lst)
Définir une fonction position3(x, lst) qui corrige ce défaut.
# définition
# test
position3(8, lst)
Jeu des 30 points¶
Présentation¶
À tour de rôle, les joueurs lancent deux dés.
S’ils n’obtiennent aucun double, ils ne marquent pas de points.
En revanche, si leurs dés affichent des doubles, voici comment calculer leur score :
- Un double 1, 2, 4, 5 rapporte 5 points
- Un double 6 rapporte 25 points
- Un double 3 ramène leur score à 0
Le premier joueur à atteindre 30 points gagne la partie.
Grâce au TP8 (une correction est disponible dans l'archive), vous pouvez déjà jouer avec votre voisin, mais à chaque tour il faut :
- effacer la fenêtre graphique
- exécuter la fonction
lancer2des(score_lancer) - compter les points
Bref, ce n'est pas idéal...
Automatisation d'une partie avec la boucle while.¶
Définir une fonction jeu30points() qui permet de jouer avec son voisin, simplement en cliquant sur la fenêtre graphique à chaque tour.
![]()
/!\ Pour cela, nous allons utiliser le fichier python jeu30points.py (disponible dans l'archive) plutôt que le jupyter notebook 1M_TP9.ipynb