Exercice en python

Fermé
diom78 - Modifié le 28 févr. 2022 à 19:30
mamiemando Messages postés 33499 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 janvier 2025 - 28 févr. 2022 à 19:45
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

Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
28 févr. 2022 à 11:51
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
0
mamiemando Messages postés 33499 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 janvier 2025 7 818
Modifié le 28 févr. 2022 à 19:45
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
0