code en anglais, commentaires en français

This commit is contained in:
nojhan 2012-03-14 21:48:09 +01:00
commit 10b7c715c1
2 changed files with 79 additions and 27 deletions

View file

@ -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 !")

View file

@ -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 :-(")