Résolue

Bonjour. je voulais vous exposer ma version pour voir si elle est optimiser et ce que vous en pensee

# Scripting
import random
print("""✨✨Jeux du nombre mistere✨✨
      Entrer un nombre entre '0' et '100'""")
i = 5
mistere = random.randint(1, 101)
while i > 0:
    nbr = input(f"""Il te reste {i} essais
                Devine le nombre: """)
    if nbr not in str(list((range(101)))):
        print("veuiller entrer un nombre valide.")
    else:
        nbr = int(nbr)
        i = i - 1
        if nbr == mistere:
            print(f"""Bravo🎉🎉🎉 Le nombre mistere etait bien {nbr}🫡.
                  Tu as trouver le nombre mystere en {5-i} essais.
                  Fin du jeux""")
        elif nbr < mistere:
            print(f"Le nombre mistere est plus grand que {nbr}.")
        elif nbr > mistere:
            print(f"Le nombre mistere est plus petit que {nbr}.")
print(f"""Domage😓😓😓 Le nombre mistere etait {mistere}.
      Fin du jeu""")
print("-" * 50)

Thibault houdon

Mentor

Bonjour Issiaka :)

Peux tu mettre en forme ton code avec le bouton rouge () ? En l'état il est difficile de lire le code correctement sans le formatage.

Merci :) !

import random
print("""✨✨Jeux du nombre mistere✨✨
      Entrer un nombre entre '0' et '100'""")
i = 5
mistere = random.randint(1, 101)
while i &gt; 0:
    nbr = input(f"""Il te reste {i} essais
                Devine le nombre: """)
    if nbr not in str(list((range(101)))):
        print("veuiller entrer un nombre valide.")
    else:
        nbr = int(nbr)
        i = i - 1
        if nbr == mistere:
            print(f"""Bravo🎉🎉🎉 Le nombre mistere etait bien {nbr}🫡.
                  Tu as trouver le nombre mystere en {5-i} essais.
                  Fin du jeux""")
        elif nbr &lt; mistere:
            print(f"Le nombre mistere est plus grand que {nbr}.")
        elif nbr &gt; mistere:
            print(f"Le nombre mistere est plus petit que {nbr}.")
print(f"""Domage😓😓😓 Le nombre mistere etait {mistere}.
      Fin du jeu""")
print("-" * 50)

Thibault houdon

Mentor

Salut Issiaka ! Merci pour le formatage du code cest tout bon !

Le code est bon à part un petit problème sur la vérification du nombre entré par l'utilisateur.

if nbr not in str(list((range(101)))):

Le problème, c'est que str(list((range(101)))) crée une chaîne de caractères et non une liste d'entiers. Donc si l'utilisateur rentre par exemple 10,, la condition sera validée, parce que la chaîne de caractères 10, est bien présente dans cette chaîne de caractères, pareil avec les crochets ouvrant et fermant de la liste :

&gt;&gt;&gt; "[" in str(list(range(101)))
True

Aussi attention aux parenthèses, là tu avais un jeu de parenthèses en trop (str(list((range(101)))) au lieu de str(list(range(101)))].

Je te conseille de vérifier si l'input est un entier en premier lieu, et ensuite, si cet entier est dans la plage 0-100.

Voilà à quoi ça pourrait ressembler :

nbr = input(f"""Il te reste {i} essais
                Devine le nombre: """)
try:
    nbr = int(nbr)
except ValueError:
    print("Tu dois entrer un nombre entier !")
    continue

if nbr not in range(101):
    print("Ton nombre doit être compris entre 0 et 100 !")
else:
  ... # le reste de ton code super cool

Bonne continuation !

```

```Bonjour,
J'ai voici mon code pour cet exercice.
J'ai appliquer une partie de tes conseilsprécédents, j'ai aussi chercher et ajouter une solution pour proposer à l'utilisateur de rejouer s'il le souhaite.

Est-ce que tu vois des coquilles, des modifications ou amélioration à apporter?

def jeu_n_m():
print('Bienvenue sur "Le nombre mystère":')
nb_m = random.randint(1, 20)
nb_vies = 5
gagne = False
for i in range(0, nb_vies):
vies = nb_vies - i
print(f"Il vous reste {vies} vies")
reponse_nb_m = input("Devine le nombre mystère: ")
if not (reponse_nb_m.isdigit()):
print("Veuillez entrer un numéro pour jouer")
elif int(reponse_nb_m) == nb_m:
print("Bravo, vous avez gagné!")
recommencer = input("Souhaitez-vous rejouer? ")
if recommencer == "o":
return jeu_n_m()
else:
print("A bientôt!")
gagne = True
break
elif int(reponse_nb_m) > nb_m:
print("Le nombre mystère est plus petit")
else:
print("Le nombre mystère est plus grand")
if not gagne:
print(f"Désolé, vous avez perdu! le nombre mystère était {nb_m}")
recommencer = input("Souhaitez-vous rejouer: o/n? ")
if recommencer == "o":
return jeu_n_m()
else:
print("A bientôt!")

cordialement.

Hello Benjamin,

peux tu stp mettre le formatage de code sinon c'est très compliqué à lire. Merci.

Bonjour,
J'ai voici mon code pour cet exercice.
J'ai appliquer une partie de tes conseilsprécédents, j'ai aussi chercher et ajouter une solution pour proposer à l'utilisateur de rejouer s'il le souhaite.

Est-ce que tu vois des coquilles, des modifications ou amélioration à apporter?

def jeu_n_m():
    print('Bienvenue sur "Le nombre mystère":')
    nb_m = random.randint(1, 20)
    nb_vies = 5
    gagne = False
    for i in range(0, nb_vies):
        vies = nb_vies - i
        print(f"Il vous reste {vies} vies")
        reponse_nb_m = input("Devine le nombre mystère: ")
        if not (reponse_nb_m.isdigit()):
            print("Veuillez entrer un numéro pour jouer")
        elif int(reponse_nb_m) == nb_m:
            print("Bravo, vous avez gagné!")
            recommencer = input("Souhaitez-vous rejouer? ")
            if recommencer == "o":
                return jeu_n_m()
            else:
                print("A bientôt!")
            gagne = True
            break
        elif int(reponse_nb_m) > nb_m:
            print("Le nombre mystère est plus petit")
        else:
            print("Le nombre mystère est plus grand")
    if not gagne:
        print(f"Désolé, vous avez perdu! le nombre mystère était {nb_m}")
        recommencer = input("Souhaitez-vous rejouer: o/n? ")
        if recommencer == "o":
            return jeu_n_m()
        else:
            print("A bientôt!")

cordialement

Thibault houdon

Mentor

Salut Benjamin,

J'ai remis en forme ton message pour que le code soit bien formaté. Il faut que les backtick (```) soient vraiment autour de ton code pour que ça fonctionne :

Formatage du code

Je laisse Pierre-André reprendre le fil pour t'indiquer des pistes d'amélioration :)

Salut Benjamin,

Ton code est bien structuré et je vois que tu as implémenté une récursivité pour recommencer à jouer c'est top. Voici quelques suggestions:

  1. avec ce genre de code on préfère utiliser une boucle while, tu trouveras ce mécanisme notemment quand tu feras des interface graphique. Ton code pourrait commencer par quelque chose du genre:

    while True:
    ...
    

  2. Pour la gestion des réponses à la question de vouloir rejouer, tu pourrais transformer la réponse en minuscule (avec .lower()) pour que "O", "o", "OUI", "oui" soient considérés comme une réponse positive. Si ton user entre O ou o il faut qu'il puisse continuer.

  3. Tu convertis reponse_nb_m en entier plusieurs fois. Cela pourrait être évité en le convertissant une fois après validation que c'est bien un chiffre et stocker cette valeur pour la réutiliser.

  4. Tu pourrais donner des retours plus précis à l'utilisateur sur la façon d'entrer les valeurs attendues ("Entrer 'o' pour oui ou autre touche pour quitter").

Voilà quelques améliorations mais autrement c'est déjà super il n'y a pas grand chose à ajouter.

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.