Aller au contenu

TDA1 : Guess the number - Correction

Donnons lignes par lignes quelques explications sur le code du jeu "Guess the number". Chaque notion évoquée ici sera détaillée dans les prochains chapitres.

Le code source du jeu : « Guess the number »

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# This is a guess the number game.
import random

guessesTaken = 0

print('Hello! What is your name?')
myName = input()

number = random.randint(1, 20)
print('Well, ' + myName + ', I am thinking of a number between 1 and 20.')

while guessesTaken < 6:
    print('Take a guess.')
    guess = input()
    guess = int(guess)

    guessesTaken = guessesTaken + 1

    if guess < number:
        print('Your guess is too low.')
    if guess > number:
        print('Your guess is too high.')
    if guess == number:
        break
if guess == number:
    guessesTaken = str(guessesTaken)
    print('Good job, ' + myName + '!')
    print('You guessed my number in ' + guessesTaken + ' guesses!')
if guess != number:
    number = str(number)
    print('Nope. The number I was thinking of was ' + number) 
  • Ligne 1 : on repère un commentaire*

  • Ligne 2 : on importe le module random, car python ne sait pas tout faire nativement, on va chercher des fonctions dans des bibliothèques externes.

  • Ligne 4 : on reconnait une instruction d'affectation, on crée une variable guessesTaken initialisée à 0.

  • Lignes 6-7 : on reconnaît les fonctions intégrées d'affichage et de saisie de python.
  • Ligne 9 : on utilise la fonction randint du module random pour générer un nombre aléatoire entre 1 et 20 (on y reviendra plus tard).
  • Ligne 10 : on reconnaît une concaténation de chaînes de caractères dans la fonction print.
  • Ligne 12 : une instruction while (que l'on n'a pas encore vue) que l'on peut traduire par "tant que"... (on y reviendra bien sûr en détails)
  • Lignes 13-14 : ... rien de neuf ;-)
  • Ligne 15 : utilisation de la fonction int. Rappelons nous que le résultat de la fonction input est toujours une chaîne de caractères. Ici cette chaîne est sensée représenter un nombre entier, on la convertit donc en entier avec la fonction int.
  • Ligne 17 : on incrémente la variable guessesTaken de 1
  • Lignes 19-24 : des instructions conditionnelles if (que l'on n'a pas encore vues) que l'on peut traduire par "si... alors...". On y reviendra là aussi très bientôt.
  • Ligne 24 : l'instruction break permet de sortir de la boucle while en cours d'exécution.
  • Lignes 25-31 : encore des instructions conditionnelles if pour afficher un message différent selon que l'utilisateur a trouvé le nombre ou non. On peut toutefois noter l'utilisation de la fonction str (lignes 26 et 30) qui permet de convertir le contenu de la variable guessesTaken ou number (qui sont des entiers) en chaîne de caractères pour pouvoir les concaténer avec d'autres chaînes de caractères dans la fonction print.