Problème exercice
skyXenity
-
raplapla -
raplapla -
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:
Merci d'avance pour votre aide
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
A voir également:
- Problème exercice
- Transmath 3eme exercice ✓ - Forum Études / Formation High-Tech
- Corrigé d'un exercice du livre transmaths 3e - Forum Loisirs / Divertissements
- Fleur d'encre 5eme corrigé exercice - Forum PDF
- Corrigés 350 exercices niveau moyen ✓ - Forum Loisirs / Divertissements
- Livre du professeur 5eme fleur d'ancre ✓ - Forum PDF
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.
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.