diff --git a/src/devine_humain.py b/src/devine_humain.py index b6ad395..a046fdc 100644 --- a/src/devine_humain.py +++ b/src/devine_humain.py @@ -6,29 +6,40 @@ min=0 max=10 print("Je pense à un nombre entre", min, "et", max ) -nombre = random.randint(min,max) -essais=4 +# Tire un entier ("integer") au hasard entre min et max compris +number = random.randint(min,max) -while essais > 0: - print("Devine ? ") - devine = input() - devine = int(devine) +attempts = 4 - if devine > nombre: +while attempts > 0: + print("guess ? ") + + # attends une saisie de l'utilisateur sous forme de chaine de caractère + guess = input() + + # interprète la chaine de caractère comme un entier + guess = int(guess) + + if guess > number: print("Trop grand") - if devine < nombre: + if guess < number: print("Trop petit") - if devine == nombre: + if guess == number: + # sort directement de la boucle "while" break - essais = essais - 1 - print("Plus que", essais, "essais") + attempts = attempts - 1 + print("Plus que", attempts, "essais") -if devine != nombre: - print("Perdu, je pensais au nombre", nombre) +# On arrive ici dans deux situations : +# 1) tous les essais ont été tentés, la boucle s'arrête d'elle-même +# 2) on a deviné le nombre secret, on est sorti par l'instruction "break" + +if guess != number: + print("Perdu, je pensais au nombre", number) else: print("Bravo !") diff --git a/src/devine_ordi_0.py b/src/devine_ordi_0.py index f8c0cbd..d70e513 100644 --- a/src/devine_ordi_0.py +++ b/src/devine_ordi_0.py @@ -1,30 +1,59 @@ #encoding: utf-8 +# Le code se découpe en deux parties : +# dans la première, on met en place les variables de base +# dans la seconde, on défini des _fonctions_ +# dans la troisième, on les instructions qui les utilisent + +############# +# Variables # +############# + import random min=0 max=10 print("Pense à un nombre entre",min,"et",max) -essais = 4 +attempts = 10 -def deviner(nb_min,nb_max): + +############# +# Fonctions # +############# + +def try_to_guess(nb_min,nb_max): + """Choisi un nombre compris entre un min et un max et le renvoie.""" + + # On peut combiner deux conditions à l'aide d'opérateurs logiques. + # Ce test sert à vérifier s'il n'y a pas eu d'erreurs dans l'enchaînement + # des réponses de l'être humain. + # Si le min est le même que le max, il n'y a pas d'entier possible entre les deux. + # De même, si le min est supérieur au max, il y a eu erreur de logique. if nb_min == nb_max or nb_min > nb_max: print("Tu as triché !") - hasard = random.randint(nb_min,nb_max) - return hasard + + rand = random.randint(nb_min,nb_max) + # Le nombre tiré au hasard est _renvoyé_ + return rand -def repondu( reponse ): - if reponse == 0: +def reply( answer ): + """Analyse la réponse de l'humain et renvoie vrai si on a trouvé la bonne.""" + + # Ces variables ont été définies en dehors de la fonction, elles sont "globales" + # il est nécessaire de le spécifier explicitement + global min,max + + if answer == 0: min = min + 1 return False - elif reponse == 1: + elif answer == 1: max = max - 1 return False - elif reponse == 2: + elif answer == 2: print("Enfin !") return True @@ -33,16 +62,28 @@ def repondu( reponse ): return False -while essais > 0: - devine = deviner(min,max) +######## +# Code # +######## - print("Je pense au nombre",devine,", est-il:") +while attempts > 0: + guess = try_to_guess(min,max) + + print("Je crois que tu penses au nombre",guess,", est-il:") print("0: trop petit ?") print("1: trop grand ?") print("2: le bon numéro ?") - reponse = int( input() ) + answer = int( input() ) - trouve = repondu( reponse ) - if trouve == True: + found = reply( answer ) + if found == True: + # il est inutile de continuer si on a déjà trouvé break + else: + attempts = attempts - 1 + +if found == True: + print("J'ai gagné :-)") +else: + print("J'ai perdu :-(")