Problème exercice

Fermé
skyXenity - Modifié le 18 juil. 2018 à 15:45
 raplapla - 18 juil. 2018 à 17:50
Bonjour à tous ,

je fait appel à vous car je bloque sur un exercice.

voici l'énoncé:

On s'intéresse au jeu suivant : Une personne A choisit un nombre au hasard entre 0 et 10000 qu'une autre personne B doit deviner aussi vite que possible. À chaque proposition de B, A indique si le nombre recherché est : plus grand, plus petit ou égal à la proposition.

L'objectif de cette épreuve est d'écrire un programme qui joue à la place de la personne B.

Le programme en question se présente sous la forme d'une fonction " devineNombre(test)" qui prend en paramètre une fonction "test(proposition)" qui permet de tester si le nombre deviné est le bon. (elle représente la personne A) et qui renvoie le nombre recherché.

La fonction test(proposition) renvoie :

0 si le nombre recherché est plus petit que la proposition ;
1 si la proposition est la bonne ;
2 si le nombre recherché est plus grand que la proposition.
Votre programme devra trouver le nombre recherché en moins de 15 essais à chaque fois !

et voici ma tentative:

def test(proposition):
   if nombre < proposition:
      test = 0
   elif nombre == proposition:
      test= 1
   elif nombre > proposition: 
      test = 2
   return test
   
def devineNombre( test  ):
    nombre=10000/2
    Max=10000
    Min=0
    while test != 1:
        if test == 0:
            Min=nombre
            nombre = (Min + Max) / 2
            return int(nombre)
            
        if test ==2:
           Max=nombre
           nombre = (Min + Max) / 2
           return int(nombre)
      
        if test ==1:
           return int(nombre)
           break
      


Merci d'avance pour votre aide

1 réponse

Bonjour.

Beaucoup de problèmes dans ton code, le 1er est que tu n'appelles jamais ta fonction test.

Il y a également le fait que tu effectues des return dans la boucle while de ta fonction devineNombre, alors que le seul retour que tu dois faire est lorsque le nombre mystère a été identifié, et bien entendu le fait de tester si test vaut 1 dans ta boucle n'a pas de sens puisque justement la condition de cette boucle est != 1.
0