Le nombre mystere
salut tout le monde.
petit point que j'ai noté lorsque l'on trouve le nombre mystère en 3 essais par exemple, dans la correction de Thibault le script nous retourne " vous avez trouvé le nombre en 3 essai". sans le "S" à essai
Du coup si je fais print(f"Tu as trouvé le nombre mystère en {6 - remaining_attempts} essai{'s' if remaining_attempts > 1 else ''} ")
est ce que c'est juste?
d'avance merci
essaye ça
essai = 6 - remaining_attempts
print(f"Tu as trouvé le nombre mystère en {essai} essai{'s' if essai > 1 else ''} ")
Bonjour,
Voici ma solution au challenge:
import sys
from random import randint
NOMBRE_MYSTERE = randint(0,100)
print(r"""
_ ______ _ _ ____ __ __ ____ ____ _____ ______ __ ____ _______ _______ ______ _____ ______
| | | ____| | \ | |/ __ \| \/ | _ \| _ \| __ \| ____| | \/ \ \ / / ____|__ __| ____| __ \| ____|
| | | |__ | \| | | | | \ / | |_) | |_) | |__) | |__ | \ / |\ \_/ / (___ | | | |__ | |__) | |__
| | | __| | . ` | | | | |\/| | _ <| _ <| _ /| __| | |\/| | \ / \___ \ | | | __| | _ /| __|
| |____| |____ | |\ | |__| | | | | |_) | |_) | | \ \| |____ | | | | | | ____) | | | | |____| | \ \| |____
|______|______| |_| \_|\____/|_| |_|____/|____/|_| \_\______| |_| |_| |_| |_____/ |_| |______|_| \_\______|
""")
nombre_essais = 5
tentative = 1
while nombre_essais > 0:
print(f"{tentative}")
print(f"il te reste {nombre_essais} essai(s)")
essai = input("Devine le nombre : ")
if not essai.isdigit() or int(essai)<0 or int(essai)>100:
print("Entrez un nombre valide")
continue
elif int(essai) == NOMBRE_MYSTERE:
print(f"Bravo Le nombre mystère était bien {essai} !")
print(f"Tu as trouvé le nombre en {tentative} essai(s)")
print("Fin du jeu")
sys.exit()
elif int(essai) < NOMBRE_MYSTERE:
print(f"Le nombre mystère est plus grand que {essai}")
if nombre_essais == 1:
print(f"Dommage ! Le nombre mystère était {NOMBRE_MYSTERE}")
elif int(essai) > NOMBRE_MYSTERE:
print(f"Le nombre mystère est plus petit que {essai}")
if nombre_essais == 1:
print(f"Dommage ! Le nombre mystère était {NOMBRE_MYSTERE}")
nombre_essais -= 1
tentative += 1
print("Fin du jeu")
sys.exit()
Si quelqu'un a des remarques à me faire afin que je puisse améliorer ma logique et mon code, je suis preneur. :D
Bonjour Rudy,
Voici comment j'optimiserai ton code :
import sys
from random import randint
NOMBRE_MYSTERE = randint(0,100)
print(r"""
_ ______ _ _ ____ __ __ ____ ____ _____ ______ __ ____ _______ _______ ______ _____ ______
| | | ____| | \ | |/ __ \| \/ | _ \| _ \| __ \| ____| | \/ \ \ / / ____|__ __| ____| __ \| ____|
| | | |__ | \| | | | | \ / | |_) | |_) | |__) | |__ | \ / |\ \_/ / (___ | | | |__ | |__) | |__
| | | __| | . ` | | | | |\/| | _ <| _ <| _ /| __| | |\/| | \ / \___ \ | | | __| | _ /| __|
| |____| |____ | |\ | |__| | | | | |_) | |_) | | \ \| |____ | | | | | | ____) | | | | |____| | \ \| |____
|______|______| |_| \_|\____/|_| |_|____/|____/|_| \_\______| |_| |_| |_| |_____/ |_| |______|_| \_\______|
""")
nombre_essais = 5
tentative = 1
while nombre_essais > 0:
print(f"{tentative}")
print(f"il te reste {nombre_essais} essai(s)")
essai = input("Devine le nombre : ")
if not essai.isdigit() or int(essai)<0 or int(essai)>100:
print("Entrez un nombre valide")
continue
elif int(essai) == NOMBRE_MYSTERE:
print(f"Bravo Le nombre mystère était bien {essai} !")
print(f"Tu as trouvé le nombre en {tentative} essai(s)")
break
if int(essai) < NOMBRE_MYSTERE:
ma_variable = "grand"
else:
ma_variable = "petit"
print(f"Le nombre mystère est plus {ma_variable} que {essai}")
if nombre_essais == 1:
print(f"Dommage ! Le nombre mystère était {NOMBRE_MYSTERE}")
nombre_essais -= 1
tentative += 1
print("Fin du jeu")
sys.exit()
Explications :
- Dans le 1er "elif", j'utiliserai "break" pour sortir de la boucle et éviter de répéter les 2 dernières lignes de code
- Je sortirai la condition si le nombre_essai == 1 car soit on a recommencé la boucle avec "continue" soit on est sorti de la boucle avec "break" dans les 2 premiers cas. Donc cette condition est utilisée pour les 2 derniers cas et on peut donc la sortir des 2 "elif" car elle sera exécutée et on évite une répétition.
- On peut aussi faire un "if ... else ..." à la place des 2 derniers "elif" car avant soit on boucle soit on sort
- Dans ce "if...else...", j'ai mis une variable (désolé pour le nom, je n'avais pas d'idée), elle permet d'utiliser le f-string sur le "print" qui suit en insérant "grand" ou "petit" et ainsi on ne répète pas la ligne 2 fois
J'espère que c'est clair
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte