IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Besoin d'aide petit Programme Python


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Besoin d'aide petit Programme Python
    Bonjour à tous !
    (Ceci est mon premier message sur ce forum et je pense pas le dernier)
    J'ai commencé L'ISN (informatique et science du numérique) cette année au lycée et après 3 ou 4 cours on nous a demandé d'écrire un programme python :

    C'est le jeu des nombres secrets :
    a)L'ordinateur doit générer un nombre de 3 chiffres , et le joueur doit le deviner.
    b)Le nombre d'essai du joueur doit être afficher
    c)Le joueur peut stopper le jeu à tout moment
    d) Et à la fin du jeu, le programme doit demander au joueur si il veut rejouer ou pas.

    Mon jeu marche mais le problème étant sur les deux dernière question :

    j'ai bien compris qu'il fallait attribuer une touche pour stopper le programme mais pas vraiment comment dire au programme comment l’arrêter.

    Mon deuxième problème étant que je ne sais absolument pas comment relancer le programme.

    Voici le programme en question :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    print("Jeu du nombre secret")
    print("Le but du jeu étant de deviner un nombre comportant trois chiffres, le jeu vous indiquera si votre proposition est plus grand ou plus petit que le nombre secret. Bonne chance ! ")
    import random
    r = random.randint(100,999)
    print(r)
    a = print("Proposer un chiffre entre 100 et 999")
    i=0
     
    while( a != r ):
        i+=1
        a = int(input("Donner une autre proposition : "))
        if( a < r ):
            print("Le nombre est plus grand !")
        elif(a > r ):
            print("Le nombre est plus petit !")
        else:
            print("Bravo, vous avez gagné le nombre était bien",r,'!')
    print("Votre nombre d'essai(s) est",i)
    merci pour votre futur aide !

  2. #2
    Membre du Club
    Homme Profil pro
    Ingénieur calcul et simulation
    Inscrit en
    Juin 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Ingénieur calcul et simulation
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 41
    Points : 60
    Points
    60
    Par défaut
    Pour relancer le programme, mets le dans une boucle while supplémentaire : quand tu as gagné (donc juste après ton annonce du nombre d'essais), tu demandes avec un rawinput s'il veut recommencer ou pas. Si la réponse est non, tu fais sortir du while, si oui, tu reste dans la boucle et recommence au tout début, là où tu initialise tes paramètres.

    Quant à arrêter le programme à tout moment, j'utiliserai a priori la commande "break" vu que tu es constamment dans des boucles while.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse, J'ai assez bien compris grâce à toi ce qu'il faut faire mais je n'y arrive toujours pas j'ai essayer d'interrompre le programme en y incorporant : if a == "Q" :
    print("vous avez quitté le Jeu)
    break

    Mais ça ne marche pas je pense que doit définir le Q mais je suis perdu

    Tandis que que je ne comprend pas non plus la fonction du raw_input.
    Mais dans mon sens je dois créer une boucle supplémentaire avant while du coup mais je ne sais pas quel condition mettre (pour moi une condition est "while (a != r) :" )

  4. #4
    Membre averti
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Points : 413
    Points
    413
    Par défaut
    Il faut mettre le tout dans une boucle while infinie et couper avec break (ça évitera juste une variable quitter par rapport à une boucle while avec condition).
    Bouddha : Tout n'est qu'illusion en ce bas monde.
    Jésus : Tout est amour divin.
    Einstein : Tout est relatif dans cet espace-temps.
    Moi : Tout est binaire sur ce forum.

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur calcul et simulation
    Inscrit en
    Juin 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Ingénieur calcul et simulation
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 41
    Points : 60
    Points
    60
    Par défaut
    Voilà une proposition, mais ce serait bien pour toi, que tu réessayes d'abord sans la regarder. C'est en essayant qu'on apprend le mieux.

    D'autres indices : si l'utilisateur écrit Q à la place d'un nombre, alors a==q et si c'est le cas, tu mets un break. Le break te fera sortir de la boucle while directement, donc le q n'a pas besoin d'être dans les conditions du while.

    Pense à utliser "try/except" sinon si l'utilisateur entre une lettre (q au hasard) et que tu essayes de faire un int() dessus, ton programme va planter.

    mon raw_input vient juste du fait que je suis en python 2.7. Pour toi en python 3.X, c'est la même chose que ton input.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    # -*-coding:Utf-8 -*-
     
    import random
     
    jouer = "o"
    while jouer == "o" :
        print("Jeu du nombre secret")
        print("Le but du jeu étant de deviner un nombre comportant trois chiffres, le jeu vous indiquera si votre proposition est plus grand ou plus petit que le nombre secret. Bonne chance ! ")
        print("Vous pouvez quitter à tout moment en appuyant sur Q")
        r = random.randint(100,999)
        print(r)
        a = "0"
        i=0
     
        while( a != r ):
            i+=1
            a = input("Proposez un chiffre entre 100 et 999 : ")
            try :
                a = int(a)
                if a > 99 and a < 1000 :
                    if a < r :
                        print("Le nombre est plus grand !")
                    elif a > r :
                        print("Le nombre est plus petit !")
                    else:
                        print("Bravo, vous avez gagné le nombre était bien",r,'!' )
                        print("Votre nombre d'essai(s) est",i)
                else :
                    print("Votre choix n'est pas compris entre 100 et 999.")
            except :
                if a.lower() == "q" :
                    break
                else :
                    print("Vous n'avez ni entré un nombre ni appuyé sur la touche Q.")
     
        jouer = input("Voulez-vous recommencer ? o/n").lower()
     
    print("Vous avez quitté le jeu")

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup, je comprend mieux pour la deuxième boucle du coup et je ne connaissais pas les fonction "try" et "except" du coup bah c'est beaucoup plus facile est compréhensible, mais je bloque encore malheureusement :

    Mon programme marche niquel sauf pour redémarrer!

    Je suis allé chercher ce qu'est le ".lower" mais j'ai pas vraiment compris.
    Si l'on pouvait m'éclairer sur ce sujet, cela serait merveilleux !

  7. #7
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    lower, cela convertit en minuscules.
    Pas d'aide par mp.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    d'accord mais du coup je vois pas son utilité dans la ligne 36 ( car c'est ici que mon programme ne marche pas )

  9. #9
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Bonsoir,

    Citation Envoyé par Esteban96 Voir le message
    d'accord mais du coup je vois pas son utilité dans la ligne 36 ( car c'est ici que mon programme ne marche pas )
    Cette ligne est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        jouer = input("Voulez-vous recommencer ? o/n").lower()
    La ligne est en lien avec la boucle principale déclarée ligne 6 et initialisée ligne 5.
    La déclaration de cette boucle teste le contenu de la variable "jouer" avec la réponse induisant le bouclage. Cette dernière qui permet la réitération de la boucle est "o".

    Pour boucler il faut donc que "jouer" contienne "o".
    Et donc que la ligne 36 assigne "o" à "jouer".
    Toute autre réponse, que "o", à la fonction input ne permet pas la reprise de la boucle.

    C'est bien le comportement attendu. Cependant, l'expérience des codeurs montre qu'il est fréquent que la réponse à une question, même très bien délimitée par l'énoncé des réponses possibles (ici "o/n"), varie d'un utilisateur à l'autre.

    Le cas sans doutes le plus fréquent est l'utilisation de majuscules.
    => lors de la réponse à une question de ce type ("o/n") il est habituel de mettre systématiquement la réponse apportée par l'utilisateur en minuscule afin d'être certain de récupérer "o" même si c'est un "O" qui est entré.
    Une autre amélioration, rapide, courante est de ne considérer que le premier caractère (pour estimer valides les réponses "O/o/oui/Oui/OUI")…

    Clodion

  10. #10
    Membre du Club
    Homme Profil pro
    Ingénieur calcul et simulation
    Inscrit en
    Juin 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Ingénieur calcul et simulation
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 41
    Points : 60
    Points
    60
    Par défaut
    Tout à fait d'accord avec Clodion qui résume très bien la situation. Après, si le programme ne marche pas chez toi, c'est peut être du à un détail de syntaxe (je n'ai pas la version 3.X de python, donc je n'ai pas pu le tester en l'état).

    Cependant, avec ça et les explications reçues, tu as normalement tout ce qu'il te faut pour finir maintenant de toi même l'exercice

    Une fois que ce sera fait, pense à marquer le sujet comme résolu.

Discussions similaires

  1. [TSX Nano-PL707] Besoin d'aide pour programmer
    Par docarno dans le forum Automation
    Réponses: 21
    Dernier message: 04/02/2008, 09h47
  2. Besoin d'aide pour programmation en c
    Par romi36 dans le forum Débuter
    Réponses: 7
    Dernier message: 09/06/2007, 22h55
  3. besoin d'aide sur programme en sql 3
    Par abdel54 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/12/2005, 09h19
  4. aide petit programme pour débutant
    Par kartp0rqx dans le forum C
    Réponses: 16
    Dernier message: 14/10/2005, 19h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo