TP9 - Boucle while
¶

A. Ridard

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.

In [ ]:
# définition avec une boucle for
In [ ]:
# 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.

In [ ]:
# définition avec une boucle while

def position2(x, lst):
    trouve = False
    i = 0
    while ###:
        if ###:
            trouve = True
        else:
            ###
    return ###
In [ ]:
# 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 ?

In [ ]:
position2(8, lst)

Définir une fonction position3(x, lst) qui corrige ce défaut.

In [ ]:
# définition 
In [ ]:
# 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.

No description has been provided for this image

/!\ Pour cela, nous allons utiliser le fichier python jeu30points.py (disponible dans l'archive) plutôt que le jupyter notebook 1M_TP9.ipynb