Quelques bases sur Python

Boucle avec conditions

Nous allons voir ici une nouvelle façon d'écrire une boucle

A chaque étape, vous pourrez tester des codes et vous entraîner.

Cette application est en construction, il est probable que des problèmes surviennent.

Prérequis :

Sortir d'une boucle : Avantage de while

Reprenons notre exemple de mot de passe avec les nombres entiers :

Exemple :

proposition = int(input("Entrez le mot de passe : "))
if proposition == 1234:
    print("Vous pouvez entrer")
else:
    print("Vous ne pouvez pas entrer")
Entrez le mot de passe : 5678
Vous ne pouvez pas entrer

Entrez le mot de passe : 1234
Vous pouvez entrer

Si l'on souhaite laisser plusieurs chances à l'utilisateur, on pourrait répéter ces instructions à l'aide d'une boucle for :

Exemple :

for i in range(3):
    proposition = int(input("Entrez le mot de passe : "))
    if proposition == 1234:
        print("Vous pouvez entrer")
    else:
        print("Recommencez")
Entrez le mot de passe : 5432
Recommencez
Entrez le mot de passe : 1234
Vous pouvez entrer
Entrez le mot de passe : 5678
Recommencez
  • Observez bien l'indentation. Tout le contenu de la boucle est décalé.
  • Problème : La boucle continue même si mot de passe a été entré.
  • Il est possible de sortir d'une boucle for avant la fin mais nous allons voir une autre méthode...

Une solution en vidéo : La boucle while

Le code de la vidéo :

proposition = int(input("Entrez le mot de passe : "))
while proposition != 1234:
    print("Recommencez")
    proposition = int(input("Entrez le mot de passe : "))

print("Vous pouvez entrer")
Entrez le mot de passe : 5432
Recommencez
Entrez le mot de passe : 5678
Recommencez
Entrez le mot de passe : 1234
Vous pouvez entrer

  • En algorithmique, while peut se traduire par "tant que ..."
  • while a == b: peut donc se lire "Tant que a est égal à b faire ..."
  • De même que pour les boucles for, le contenu d'une boucle while doit être indenté.
  • La fin de boucle while signifie que la condition n'est plus remplie.

Exercice :

Tester, corriger et compléter le jeu du nombre mystère suivant :

  • La machine définit un nombre entier aléatoire entre 1 et 20.
  • L'utilisateur doit trouver ce nombre.
  • Tant que l'utilisateur ne trouve pas, la machine repose la question.
  • A chaque essai, la machine affiche si le nombre mystère est plus grand ou plus petit que le nombre proposé.
  • Si le joueur trouve, la machine affiche "GG"

Ajouter un compteur à une boucle while

Comme pour une boucle for, il est possible de créer un compteur et de l'incrémenter

Exemple :

i = 0
while i < 5:
    print(i)
    i = i + 1

0
1
2
3
4
  • Il faut initialiser la variable qui servira de compteur avant de démarrer la boucle : i = 0
  • Il faut aussi incrémenter cette variable dans la boucle pour la faire avancer : i = i + 1
  • Dans cet exemple, effectivement, une boucle for semble plus simple ...

Exercice :

Dans chaque cas, utiliser une boucle while pour afficher :

  • Tous les nombres pairs de 0 à 56 inclus.
  • Tous les carrés parfaits de 0 à 900 : 0; 1; 4; 9; ... ;900

Boucles infinies

while permet de programmer des boucles infinies. Il faut donc être vigilant...

Voici deux exemples de boucles infinies. Si vous les exécutez sur votre machine, il faudra recharger la page.

Exemple en oubliant d'augmenter la variable utilisée pour le compteur :

i = 0
while i < 5:
    print(i)

0
0
0
0

La variable i n'atteindra jamais la valeur 5 donc la condition sera toujours vraie.

Exemple avec une condition volontairement toujours vraie :

while True:
    print("coucou")

coucou
coucou
coucou

La condition de répétition est toujours vraie : True.

On peut rencontrer cette boucle infinie dans la programmation d'objets connectés...

Atteindre une valeur ou un score

Nous allons travailler sur les variables et les conditions de sortie de boucle.

Exercice sur papier : Calcul mental !

Voici un code à lire :

u = 1
while u < 1000:
    print(u)
    u = u*2
  1. Ecrire sur une feuille les différentes valeurs de u que la machine va afficher.
  2. Vérifier vos valeurs avec le programme.

Exercice :

Le code suivant permet de relancer un dé tant que l'on obtient pas 6 :

import random

de = 0 #Initialisation

while de != 6:
    de = random.randint(1,6)
    print(de)
2
4
3
3
4
5
6

  1. Tester le code proposé.
  2. Créer une variable qui permet de compter le nombre de lancers effectués et l'afficher en sortie de boucle.
Vous pouvez maintenant étudier le cours suivant : Cours 6 : Les fonctions
Cours1 : Déplacer la tortue Cours2 : Répéter Cours3 : Procédures Cours4 : On mélange tout