Résolue

Le nombre mystere

# Chaînes de caractères # Correction de code

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



Salut,

Oui le script fonctionne bien pour ajouter un s à la fin .

Ok merci 1👍

re


du coup petit problème, lorsque que l'on trouve en 1 essai


Il te reste 5 essais 

Devine le nombre : 1

Bravo ! Tu as trouvé le nombre mystère qui était 1 !

Tu as trouvé le nombre mystère en 1 <u>essais </u>

Fin du jeu. 


il y'a quand même le "S", alors que c'est en 1 essai

essaye ça

essai = 6 - remaining_attempts

print(f"Tu as trouvé le nombre mystère en {essai} essai{'s' if essai > 1 else ''} ")


non je ne pense pas car si je fais 5 essais donc 6 - remaining_attempts = 6 - 5 = 1, alors que fait 5 essais

remaining_attemps correspond au nombre de coup qu'il te reste +1 donc si tu à fais 5 essais il te reste 0+1 soit au total 6-1 = 5 essais

après si on a pas la même définition de la variable c'est difficile.

Salut Younès, est ce que c'est clair pour toi ou toujours pas ? Désolé je ne suis plus sûr en voyant le fil de discussion. Merci

Salut,


Oui c'est bon du coup. La réponse de @hdcasedi était correcte, j'ai essayé et ça fonctionne.

Merci tout le monde




ça marche merci Younès .

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 !)

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.