Exercice en python
Bonjour,
J'ai une série d'exercices en python et je n'arrive pas à faire les exercices.
Dans cet exercice, nous revenons sur le petit jeu de devinette.
Écrire un programme qui génère de manière (pseudo) aléatoire un entier (nombre secret) compris entre 0 et 100. Ensuite, le joueur doit deviner ce nombre en utilisant le moins d’essais possible.
À chaque tour, le joueur est invité à proposer un nombre et le programme doit donner une réponse parmi les suivantes :
« Trop grand » : si le nombre secret est plus petit que la proposition et qu’on n’est pas au maximum d’essais
« Trop petit » : si le nombre secret est plus grand que la proposition et qu’on n’est pas au maximum d’essais
« Gagné en n essai(s) ! » : si le nombre secret est trouvé
« Perdu ! Le secret était nombre » : si le joueur a utilisé six essais sans trouver le nombre secret.
Exemple 1 Une partie gagnée (après la génération du nombre à deviner) :
NB : Les nombres sont les valeurs saisies par l’utilisateur, et les textes sont imprimés par le programme.
Exemple 2 Une partie perdue (après la génération du nombre à deviner) :
Voici le code que j'ai écrit, mais ça ne marche pas :
Et voici le résultat ça donne :
J'ai une série d'exercices en python et je n'arrive pas à faire les exercices.
Dans cet exercice, nous revenons sur le petit jeu de devinette.
Écrire un programme qui génère de manière (pseudo) aléatoire un entier (nombre secret) compris entre 0 et 100. Ensuite, le joueur doit deviner ce nombre en utilisant le moins d’essais possible.
À chaque tour, le joueur est invité à proposer un nombre et le programme doit donner une réponse parmi les suivantes :
« Trop grand » : si le nombre secret est plus petit que la proposition et qu’on n’est pas au maximum d’essais
« Trop petit » : si le nombre secret est plus grand que la proposition et qu’on n’est pas au maximum d’essais
« Gagné en n essai(s) ! » : si le nombre secret est trouvé
« Perdu ! Le secret était nombre » : si le joueur a utilisé six essais sans trouver le nombre secret.
Exemple 1 Une partie gagnée (après la génération du nombre à deviner) :
NB : Les nombres sont les valeurs saisies par l’utilisateur, et les textes sont imprimés par le programme.
50
Trop grand
8
Trop petit
20
Trop petit
27
Gagné en 4 essai(s) !
Exemple 2 Une partie perdue (après la génération du nombre à deviner) :
50
Trop grand
24
Trop petit
37
Trop petit
43
Trop grand
40
Trop petit
41
Perdu ! Le secret était 42
Voici le code que j'ai écrit, mais ça ne marche pas :
import random
secret = random.randint(0, 100)
NB_ESSAIS_MAX = 6
while NB_ESSAIS_MAX > 0:
NB_ESSAIS_MAX -= 1
var = int(input())
if var > secret:
print("Trop grand")
elif var < secret:
print("Trop petit")
else:
break
if NB_ESSAIS_MAX != 0:
print("Gagné en ", NB_ESSAIS_MAX, " essai(s) !")
else:
print("Perdu ! Le secret était", secret)
Et voici le résultat ça donne :
L'appel à votre programme sur l'input "50↵24↵" avec les arguments "97" a renvoyé:
Trop grand
Gagné en 4 essai(s) !
Le résultat attendu était :
Trop grand
Gagné en 2 essai(s) !
fail L'appel à votre programme sur l'input "50↵24↵11↵17↵" avec les arguments "54" a renvoyé:
Trop grand
Trop grand
Trop petit
Gagné en 2 essai(s) !
Le résultat attendu était :
Trop grand
Trop grand
Trop petit
Gagné en 4 essai(s) !
fail L'appel à votre programme sur l'input "50↵75↵62↵68↵71↵" avec les arguments "56" a renvoyé:
Trop petit
Trop grand
Trop petit
Trop petit
Gagné en 1 essai(s) !
Le résultat attendu était :
Trop petit
Trop grand
Trop petit
Trop petit
Gagné en 5 essai(s) !
fail L'appel à votre programme sur l'input "50↵24↵11↵17↵" avec les arguments "1" a renvoyé:
Trop grand
Trop grand
Trop petit
Gagné en 2 essai(s) !
Le résultat attendu était :
Trop grand
Trop grand
Trop petit
Gagné en 4 essai(s) !
fail L'appel à votre programme sur l'input "50↵24↵11↵5↵8↵9↵" avec les arguments "72" a renvoyé:
Trop grand
Trop grand
Trop grand
Trop petit
Trop petit
Perdu ! Le secret était 9
Le résultat attendu était :
Trop grand
Trop grand
Trop grand
Trop petit
Trop petit
Gagné en 6 essai(s) !
2 réponses
-
Bonjour,
L'indentation est importante en Python, merci te réafficher ton code avec les balises:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code -
Bonjour,
Je pense que ton erreur, c'est que tu as écris ton code pour compter le nombre d'essais restants alors qu'il fallait compter le nombre d'essais faits.
Mis à part ça, utiliser une bouclefor
me paraît plus simple (et plus naturel) qu'une bouclewhile
, mais tu peux parfaitement utiliser une bouclewhile
si tu préfères...
Une fois corrigé ton programme pourrait ressembler à ceci :
import random secret = random.randint(0, 100) NB_ESSAIS_MAX = 6 for essai in range(1, NB_ESSAIS_MAX + 1): var = int(input()) if var > secret: print("Trop grand") elif var < secret: print("Trop petit") else: break if essai == NB_ESSAIS_MAX: print(f"Perdu ! Le secret était {secret}") else: print(f"Gagné en {essai} essai(s) !")
Bonne chance