Résolue

Pluriel/singulier sur "essai"

# Affichage # Structures conditionnelles # Correction de code

Bonjour,

Sur la partie où on écrit le mot essai, je ne comprends la syntaxe de la condition, il n'y a pas les : après le 1 et le else. Comment sa fonctionne et dans quel cas l'utilise-t-on ?

J'ai essayé de faire la même chose mais c'est beaucoup moins lisible :

if try_number == 1:
    print(f"Il te reste {try_number} essai")
else:
    print(f"Il te reste {try_number} essais")

Est il possible par la même occasion d'avoir un avis sur ma version du code ?

import sys
import random

mystery_number = random.randint(0, 100)
try_number = 5
user_try = ""
increment = 0
#print(f"Le nombre mystère est {mystery_number}")

print("⭐ Le jeu du nombre mystère ⭐")
#Boucle principale
while try_number > 0:
    #Définir le nombre d'essais qu'il reste à l'utilisateur
    if try_number == 1:
        print(f"Il te reste {try_number} essai")
    else:
        print(f"Il te reste {try_number} essais")

    #Demander à l'utilisateur de rentrer un nombre et par la même occasion vérifier si c'est bien un nombre
    user_try = input("Devines le nombre : ")
    if not user_try.isdigit():
        print("Veuillez rentrer un nombre valide.")
    else:
        try_number -= 1
        increment += 1
        user_try = int(user_try)
        if increment <= 5:
            #Le cas dans lequel le nombre mystère est trouvé
            if user_try == mystery_number:
                if increment == 1:
                    print(f"Bravo ! Le nombre mystère était bien {mystery_number} !\nTu as trouvé le nombre mystère en {increment} essai\nFin du jeu.")
                    sys.exit()
                else:
                    print(f"Bravo ! Le nombre mystère était bien {mystery_number} !\nTu as trouvé le nombre mystère en {increment} essais\nFin du jeu.")
                    sys.exit()
            #Le cas dans lequel le nombre mystère est plus petit que ce que l'utilisateur a noté
            elif mystery_number < user_try:
                print(f"Le nombre mystère est plus petit que {user_try}")
            #Le cas dans lequel le nombre mystère est plus grand que ce que l'utilisateur a noté
            else:
                print(f"Le nombre mystère est plus grand que {user_try}")
        else:
            print(f"Dommage ! Le nombre mystère était : {mystery_number}")

print("Fin du jeu.")

Merci !

Thibault houdon

Mentor

Salut Farouk !

Déjà bien joué pour ton code, il est clair et bien structuré. L'utilisation de la fonction random pour créer un nombre mystère et ta gestion des tentatives est cool, Bravo! pour améliorer le code tu pourrais essayer de reduire le nombre de if imbriqués vers la fin.

Pour revenir à ta question, tu l'utilises correctement, ne t'inquiète pas. Le : est nécessaire après le if et le else en Python pour indiquer où la condition commence et se termine. Donc dans ton cas, tu as raison de mettre : après if try_number == 1: et else:.

Dans la vidéo j'utilise ce qu'on appelle un operateur ternaire, ça permet de faire une condition sur une seule ligne et avec ça tu n'as pas besoin des deux points.

print(f"Il te reste {try_number} {'essai' if try_number == 1 else 'essais'}")

https://book.pythontips.com/en/latest/ternary_operators.html

Ce qui se passe dans le code ci-dessus, c'est que Python évalue d'abord ce qui est entre {}. Il regarde si try_number est égal à 1. Si c'est vrai, il utilise 'essai' sinon, il utilise 'essais'. C'est une façon plus concise d'écrire ton if et else, mais ta façon est aussi parfaitement valide, ça dépend juste de ce que tu trouves le plus lisible.

Et dans la vidéo je fais ça juste avec le "s".

Bonne continuation !

Merci beaucoup, je comprends mieux maintenant :)

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.