Bonjour. je voulais vous exposer ma version pour voir si elle est optimiser et ce que vous en pensee
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)
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)
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 :
>>> "[" 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.
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
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:
-
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: ... -
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. -
Tu convertis
reponse_nb_men 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. -
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 !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte
