Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme fonctions random, dans un pierre papier ciseaux.

Sujet résolu
    15 février 2011 à 8:08:34

    Bonjour, bonjour.

    Voila deja une journée que je m'arache les cheveux sur une fonction random toute bete.
    Elle est utilise dans une jeu de pierre papier ciseaux pour determiner le choix de l'ordinateur contre le joueur. Placer dans un while, pour que le joueur puisse rejouer si il le veut, elle marche tres bien la premiere partie, mais fait planter le soft a la deuxieme. N'auriez vous pas une reponse toute bete démontrant de ma stupidite flagrante.

    Voila pour l'affichage console.
    Python 3.1.3 (r313:86834, Nov 27 2010, 18:30:53) [MSC v.1500 32 bit (Intel)] on win32
    Type "copyright", "credits" or "license()" for more information.
    >>> ================================ RESTART ================================
    >>> 
    Salut toi Une petite partie de pierre, papier, ciseaux? O/N
    O
    Trop cool alors choisis entre la pierre/1 papier/2 ou bien ciseaux/3
    2
    Ben tient on a tout les deux choisi la meme chose
    
    Tu veux refaire une partie? O/N
    O
    Ouaiiiiii!
    Traceback (most recent call last):
      File "C:/Users/Hsaiget/Desktop/Programmation/Python/pps.py", line 41, in <module>
        random = random.randint(1, 3)
    AttributeError: 'int' object has no attribute 'randint'
    >>>

    et maintenant le code du soft(Ne vous moquez pas^^)
    import os
    import random
    
    quitter = False
    
    print("Salut toi Une petite partie de pierre, papier, ciseaux? O/N")
    reponse = input()
    if reponse == "N":
        quitter = True
        print("Oh bah dit donc je suis decus")
    while quitter == False:
        random = random.randint(1, 3)
        print("Trop cool alors choisis entre la pierre/1 papier/2 ou bien ciseaux/3")
        reponse = input()
        if reponse == "1":
            if random == 1:
                print("Ben tient on a tout les deux choisi la meme chose")
            if random == 2:
                print("Je t'ai powned looser et oui le papier gagne contre la pierre")
            if random == 3:
                print("Bon bah bien joue, en effet avec mes ciseaux a la con j'ai rien pus faire")
        if reponse == "2":
            if random == 2:
                print("Ben tient on a tout les deux choisi la meme chose")
            if random == 1:
                print("Et merdeuh bordel il fallait que je choisisse cette pierre a la con")
            if random == 3:
                print("Et ouai Whooze the boss? Bitch. Ton papier c'est fait ratiboiser par mes ciseaux")
        if reponse == "3":
            if random == 3:
                print("Ben tient on a tout les deux choisi la meme chose")
            if random == 1:
                print("Et merde tu a casse mes ciseaux connard")
            if random == 2:
                print("Oui j'avoue choisir le papier etait une mauvaise idee")
        pause = input()
        print("Tu veux refaire une partie? O/N")
        reponse = input()
        if reponse == "O":
            print("Ouaiiiiii!")
            random = random.randint(1, 3)
        else:
            quitter = True
    
    quit()
    


    Je vous remercie d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      15 février 2011 à 10:52:35

      Bonjour à toi,

      En fait, lors de ton premier passage dans ta boucle, random est le nom du module, c'est pourquoi tu peux l'utiliser. Cependant, tu affecte ton nombre aléatoire à une variable nommée random aussi. Ainsi, lors de ton second passage, random n'est plus le nom d'un module, mais le nom d'une variable de type entier. C'est pourquoi le message d'erreur t'indique qu'un type entier ne possède pas d'attribut randint. Change ton nom de variable en autre chose que random et ton souci devrait être résolu ;)
      • Partager sur Facebook
      • Partager sur Twitter
        15 février 2011 à 11:12:34

        Tu devrais faire une fonction pour ton code
        En gros :
        def papierciseaux(reponse,hasard) :
            try :
                if reponse==hasard==1 :
                ...
            except :
        


        etc...
        • Partager sur Facebook
        • Partager sur Twitter
          15 février 2011 à 11:39:05

          import random # <--- random est un module
          random = random.randint(1,3) # <--- random est maintenant un chiffre, plus un module
          • Partager sur Facebook
          • Partager sur Twitter

          Python c'est bon, mangez-en. 

            15 février 2011 à 19:55:09

            Voici plusieurs conseils sur ton code ;) :
            import os
            import random
            

            • Il n'est pas nécéssaire d'importer le module os, il ne te sert pas
            • Tu n'utilise que la fonction randint du module random, n'importe donc que cette fonction-ci

            print("Salut toi Une petite partie de pierre, papier, ciseaux? O/N")
            	reponse = input()
            

            • Je ne comprend pas bien cette partie-là du code : s'il ne vaut pas jouer, pourquoi démarrerai-t'il le programme ?

            while quitter == False:
            

            • Tu peux écrire while not quitter, c'est plus lisible :)

            random = randint(1,3)
            

            • Ne nomme pas ta variable random ; appelle-la plutôt "choixOrdi", "choixCPU" ou "choixAdversaire" par exemple

            print("Trop cool alors choisis entre la pierre/1 papier/2 ou bien ciseaux/3")
            reponse = input()
            

            • Tu peux mettre ton message entre les parentèses du input()

            pause = input()
            print("Tu veux refaire une partie? o/n")
            reponse = input()
            

            • Même remarque

            if reponse == "o":
                    print("Ouaiiiiii!")
                    random = random.randint(1, 3)
                else:
                    quitter = True
            

            • On peut retourner le problème : si l'utilisateur ne rentre pas "o", la boucle est cassée

            quit()
            

            • Cette ligne est inutile
            • Partager sur Facebook
            • Partager sur Twitter
              16 février 2011 à 5:46:05

              Un grand merci pour tous vos conseil, que je m'empresse d'ailleur d'appliquer a mon code.
              • Partager sur Facebook
              • Partager sur Twitter

              Probleme fonctions random, dans un pierre papier ciseaux.

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown