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.

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

  1. Modérateur
    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 boucle
    for
    me paraît plus simple (et plus naturel) qu'une boucle
    while
    , mais tu peux parfaitement utiliser une boucle
    while
    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