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 :

Pierre Feuille Ciseaux [Python 3.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2022
    Messages : 3
    Par défaut Pierre Feuille Ciseaux
    Bonjour,
    J'essaye de faire un programme qui me renvoie le nombre de point que gagne un joueur contre un IA ,en jouant à Pierre-Papier-Ciseaux.
    Je bloque a un certain endroit ,mon programme m'affiche un chiffre aléatoire de manière constant ,que puis je faire pour résoudre ce problème.
    Voici mon programme:

    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
    import random
     
    def bat(joueur_1, joueur_2):
        #0 : PIERRE, 1 : FEUILLE, 2 : CISEAUX
        x_1=0
        for i in range(5):
            random.seed(65)
            print(random.randint(0, 2))
            print(joueur_1)
            if (joueur_1 == 0 and joueur_2 == 2) or (joueur_1 == 2 and joueur_2 == 1) or (
                    joueur_1 == 1 and joueur_2 == 0):
                x_1 = x_1 + 1
                return i
            elif (joueur_2 == 0 and joueur_1 == 2) or (joueur_2 == 2 and joueur_1 == 1) or (
                    joueur_2 == 1 and joueur_1 == 0):
                x_1 = x_1 - 1
                return i
            elif joueur_1 == joueur_2:
                x_1 = x_1
                return i
     
     
    s=int(input())
    random.seed(s)
    joueur_2 = random.randint(0, 2)
    joueur_1=int(input())
    bat(joueur_1, joueur_2)
    for i in range(4):
        joueur_1 = int(input())
        bat(joueur_1, joueur_2)

    Et merci coordialement

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 815
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par porinci Voir le message
    J'essaye de faire un programme
    Et tu le trouves lisible ???

    Citation Envoyé par porinci Voir le message
    Je bloque a un certain endroit ,mon programme m'affiche un chiffre aléatoire de manière constant ,que puis je faire pour résoudre ce problème.
    Peut-être récupérer ce que retourne la fonction "bat()". Car c'est quand-même dommage de faire retourner un truc et ne pas s'en servir...

    Ensuite, tu peux réfléchir un minimum pour éviter tous ces tests sur 0 et 2 ou 2 et 1 etc. T'as pas remarqué qu'avec pierre=0, feuille=1 et ciseaux=2 alors il suffit que (x+1) % 3 == y pour que y gagne x???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    Je pense qu'il faut que vous postiez le code en tant que fichier attaché ou en utilisant la balise code afin que les tabulations soient présentes.
    Là le code est inutilisable.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2022
    Messages : 3
    Par défaut trouver une correction
    Re ,
    j'ai trouve quelqu'un qui a fait le programme ,sauf que meme son programme ne marche ,resulat_manche,à la 38 -ème ligne, me dit que je suis suppose mettre 0 arguments.
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    import random
     
    PIERRE = 0
    FEUILLE = 1
    CISEAUX = 2
     
    TEXTES = ('PIERRE', 'FEUILLE', 'CISEAUX')
     
     
    def bat(coup_1, coup_2):
        return coup_1 == (coup_2 + 1) % 3
     
    def resulat_manche():
        if bat(coup_o, coup_j):
            pt = -1
            verbe = 'bat'
        elif bat(coup_j, coup_o):
            pt = 1
            verbe = 'est battu par'
        else:
            pt = 0
            verbe = "annule"
        return pt, verbe
     
    def score():
        if score > 0:
            print('Gagne')
        elif score == 0:
            print('Nul')
        else:
            print('Perdu')
     
    def manche(score):
        coup_o = random.randint(0, 2)
        coup_j = int(input("Entrez votre choix: 0 pour Pierre,"
                           "\n 1 pour feuille,"
                           "\n, ou 2 pour Ciseaux:  "))
        (pt, verbe) = resulat_manche(coup_o, coup_j)
        score += pt
        print('{} {} {} : {}'.format(TEXTES[coup_o], verbe, TEXTES[coup_j], [score]))
        return score
     
    def jeu(nb_manches):
        # realiser les nb de manches
        random.seed(int(input("Entrez un nombre:  ")))
        score = 0
        for i in range(nb_manches):
            score = manche(score)
        # afficher le resultat final
            resultat_manche(score)
     
    jeu(5)

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 815
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bayard Voir le message
    Je pense qu'il faut que vous postiez le code en tant que fichier attaché
    Non => Préférez toujours le copier/coller de votre code sur le forum plutôt que de le mettre en pièce jointe ou sur un lien temporaire (cf les règles).

    Citation Envoyé par porinci Voir le message
    j'ai trouve quelqu'un qui a fait le programme
    Ah ben voilà. Pourquoi tu t'embêtes à bosser alors que tu trouveras toujours sur le net des braves types prêts à bosser gratos pour toi?
    Accessoirement tu n'as pas répondu à ma première question donc je la réitère avec plus d'insistance: tu trouves ton (enfin son) programme lisible?

    Citation Envoyé par porinci Voir le message
    sauf que meme son programme ne marche pas
    Ah mince !!! Tu devrais demander à te faire rembourser.

    Citation Envoyé par porinci Voir le message
    resulat_manche,à la 38 -ème ligne, me dit que je suis suppose mettre 0 arguments.
    Ben oui, puisque la fonction est en effet définie ainsi, avec pas d'argument, pourquoi toi tu lui en mets? Comment conçois-tu qu'une fonction qui n'a pas besoin d'argument va traiter ceux que tu lui passes?
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2022
    Messages : 3
    Par défaut
    Ah ben voilà. Pourquoi tu t'embêtes à bosser alors que tu trouveras toujours sur le net des braves types prêts à bosser gratos pour toi?
    Accessoirement tu n'as pas répondu à ma première question donc je la réitère avec plus d'insistance: tu trouves ton (enfin son) programme lisible?

    je fais cette exos depuis 5h je suis fatigue j'ai du enchainé 2 jours a faire que des exos du matin au soir

    Ah mince !!! Tu devrais demander à te faire rembourser.

    c'est une solution que j'ai trouvé dans forum

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 815
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par porinci Voir le message
    je fais cette exos depuis 5h je suis fatigue j'ai du enchainé 2 jours a faire que des exos du matin au soir
    Repose-toi. Il y a des limites à tout et ça vaut mieux que de faire inutilement du mauvais travail

    Citation Envoyé par porinci Voir le message
    c'est une solution que j'ai trouvé dans forum
    Mauvaise idée. Soit c'est un exercice que tu t'es donné pour apprendre Python et dans ce cas, c'est à toi de le résoudre, soit c'est un exercice que t'as donné ton prof pour apprendre Python et dans ce cas c'est à toi de le résoudre. Dans tous les cas c'est à toi de le résoudre.
    Travaille en atomicité. De petites fonctions qui ne font qu'une chose. Jouer à shifoumi c'est 1) je choisis un objet 2) mon adversaire choisit un objet 3) on regarde qui gagne qui, on incrémente le score du gagnant et on recommence. Si tu découpes 1, 2 et 3 en autant d'actions/fonctions distinctes tes soucis se règleront d'eux-mêmes.

    Mainenant si tu penses qu'un code tout fait te sera plus profitable qu'un travail personnel, tu en as un ici code qui, lui, fonctionne.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2004
    Messages : 16
    Par défaut
    Citation Envoyé par porinci Voir le message
    Bonjour,
    J'essaye de faire un programme qui me renvoie le nombre de point que gagne un joueur contre un IA ,en jouant à Pierre-Papier-Ciseaux.
    Je bloque a un certain endroit ,mon programme m'affiche un chiffre aléatoire de manière constant ,que puis je faire pour résoudre ce problème.
    Voici mon programme:

    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
    import random
     
    def bat(joueur_1, joueur_2):
        #0 : PIERRE, 1 : FEUILLE, 2 : CISEAUX
        x_1=0
        for i in range(5):
            random.seed(65)
            print(random.randint(0, 2))
            print(joueur_1)
            if (joueur_1 == 0 and joueur_2 == 2) or (joueur_1 == 2 and joueur_2 == 1) or (
                    joueur_1 == 1 and joueur_2 == 0):
                x_1 = x_1 + 1
                return i
            elif (joueur_2 == 0 and joueur_1 == 2) or (joueur_2 == 2 and joueur_1 == 1) or (
                    joueur_2 == 1 and joueur_1 == 0):
                x_1 = x_1 - 1
                return i
            elif joueur_1 == joueur_2:
                x_1 = x_1
                return i
     
     
    s=int(input())
    random.seed(s)
    joueur_2 = random.randint(0, 2)
    joueur_1=int(input())
    bat(joueur_1, joueur_2)
    for i in range(4):
        joueur_1 = int(input())
        bat(joueur_1, joueur_2)

    Et merci coordialement
    En ligne 27 vous ne vous servez pas de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bat(joueur_1, joueur_2)
    . Pour récupérer la valeur de la fonction bat, il faut l'attribuer à une variable par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat_bat =  bat(joueur_1, joueur_2)

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 512
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 512
    Par défaut
    Si il n'y avait que ça
    dans le code initial, à quoi servent les random dans la fonction bat ? (à rien) à quoi sert la boucle for? pourquoi retourner i? (un return fait sortir de la fonction) à quoi sert x_1 ?
    pourquoi le joueur_2 ne joue qu'une fois ? il ne fait pas de tirage dans la boucle de jeu

    dans l'autre code, attention à la faute de frappe entre resulat_manche et resultat_manche

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création Pierre Feuille Ciseaux
    Par BatisteBlactot200319 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/02/2021, 15h57
  2. Réponses: 19
    Dernier message: 21/02/2019, 12h21
  3. Pierre Feuille Ciseaux JS
    Par Uisge Beatha dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 24/08/2018, 14h30
  4. Pierre Feuille Ciseaux
    Par Wilvart dans le forum C++
    Réponses: 12
    Dernier message: 20/08/2006, 13h19
  5. [Conception] Concevoir le jeu Pierre Feuille Ciseau
    Par websurfeur dans le forum Général Java
    Réponses: 14
    Dernier message: 17/03/2006, 19h26

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