Résolue

Amélioration du code ?

# Correction de code # Scripting

Hello,

Cette fois ci j'ai beaucoup moins galérer sur cet exercice car je ne suis pas allé trop loin, comme nous l'avons fait de façon différente, je ne vois pas ce que je pourrai améliorer ?

# Importer et générer le nom mystère

import random

random_int = random.randint(1, 100)

print("""      Bienvenue dans le jeu du nombre mystère.
      Voici les règles du jeu : Vous avez 5 essais pour trouver le nombre.
      Le nombre se trouve entre 1 et 100.""")

essais_maximum = 5

main_game = True
while main_game == True:
    try:
        player_guess = int(input("Devinez le nombre : "))
    except ValueError:
        print("Veuillez rentrer un chiffre.")
        continue
    if player_guess == random_int:
        main_game = False
        resultat_win = 5 - essais_maximum
        print(f"Bravo vous avez trouvé le nombre mystère en {resultat_win} essais !")
    elif player_guess > random_int and player_guess < 101 and essais_maximum != 1:
        essais_maximum -= 1
        print(f"Le chiffre mystère est plus plus petit que {player_guess}")
        print(f"Il vous reste {essais_maximum}")
    elif player_guess < random_int and player_guess > 0 and essais_maximum != 1:
        essais_maximum -= 1
        print(f"Le chiffre mystère est plus grand que {player_guess}.")
        print(f"Il vous reste {essais_maximum}")
    elif essais_maximum == 1:
        print(f"Vous avez perdu ! Le chiffre mystère est {random_int}")
        main_game = False
    else:
        print("Veuillez renter un chiffre entre 1 et 100.")

Thibault houdon

Mentor

Salut Alan !

C'est super, bravo, ton code est bien structuré en général, avec des noms explicites, ça se lit bien :)

Tu peux l'améliorer encore un peu notamment en simplifiant les conditions :

Voici une version révisée :

import random

def main():
    # Générer le nombre mystère
    random_int = random.randint(1, 100)

    print("""Bienvenue dans le jeu du nombre mystère.
Voici les règles du jeu : Vous avez 5 essais pour trouver le nombre.
Le nombre se trouve entre 1 et 100.""")

    essais_maximum = 5
    main_game = True

    while main_game:
        try:
            player_guess = int(input("Devinez le nombre : "))
        except ValueError:
            print("Veuillez rentrer un chiffre.")
            continue

        if player_guess == random_int:
            print(f"Bravo, vous avez trouvé le nombre mystère en {5 - essais_maximum + 1} essai(s) !")
            break
        elif player_guess < 1 or player_guess > 100:  #  👈 On gère ce cas directement ici
            print("Veuillez rentrer un chiffre entre 1 et 100.")
        else:
            essais_maximum -= 1
            if essais_maximum == 0:
                print(f"Vous avez perdu ! Le chiffre mystère était {random_int}")
                break

            # On utilise un opérateur ternaire pour créer le message final et éviter des `if`
            hint = "plus petit" if player_guess > random_int else "plus grand"
            print(f"Le chiffre mystère est {hint} que {player_guess}. Il vous reste {essais_maximum} essai(s).")

if __name__ == "__main__":
    main()

Mais on rentre déjà dans de l'optimisation de code, c'est normal au début de décomposer les choses comme tu l'a fait, et ça prendra vraiment du temps pour arriver à écrire du code plus succinct directement donc ne t'en fais pas. L'important ici c'est d'arriver à produire un code qui marche et de comprendre la logique, et c'est réussi 👏

Salut Thilbault et merci de ta réponse, j'ai effectivement compris comment optimisé mais ce n'est pas encore dans ma tête, ça viendras !

Juste pour la fin :

if __name__ == "__main__":
    main()

je n'ai pas compris ce bout de code, pourrais tu m'expliquer ce que tu fais ici ?

Bonjour Alan,

Tu trouveras une explication ici

Bonne lecture

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.