Menu

Probleme programme pierre feuille ciseaux [Résolu]

-
Bonjour, j'ai quelque probleme avec mon programme de pierre feuille ciseaux,
from random import *
joueur = int(input("choisissez pierre = 1, feuille = 2 ou ciseaux = 3"))

pierre = 1
feuille = 2
ciseaux = 3
n = 0
b = 0

if joueur == 1:
    result_joueur = "pierre"
elif joueur == 2:
    result_joueur = "feuille"
elif joueur == 3:
    result_joueur = "ciseaux"

list = []
a = randint(1,3)
if a == 1:
    result = "pierre"
elif a == 2:
    result = "feuille"
elif a == 3:
    result = "ciseaux"

if result == result_joueur:
    print("égalité")

if result == 1 and result_joueur == 2:
    print("le joueur a gagné")
    n+1
if result == 1 and result_joueur == 3:
    print("L'ordinateur a gagné")
    b+1
if result == 2 and result_joueur == 1:
    print("L'ordinateur a gagné")
    b+1
if result == 2 and result_joueur == 3:
    print("Le joueur a gagné")
    n+1
if result == 3 and result_joueur == 1:
    print("le joueur a gagné")
    n + 1
if result == 3 and result_joueur == 2:
    print("L'ordinateur a gagné")


print(result, result_joueur)

la consol me donne que la derniere ligne ou egalité, mais ne me donne pas les print("l'ordinateur a gagné") ou print("le joueur....") j'ai du mal a comprendre ( aucune erreur detacter dans la syntaxe)
Configuration: Windows / Chrome 71.0.3578.98
Afficher la suite 

Votre réponse

3 réponses

Messages postés
3132
Date d'inscription
vendredi 9 janvier 2015
Dernière intervention
12 février 2019
547
0
Merci
Bonjour !

T'as juste voulu aller trop loin :-) Tu as affecté à result, non pas des nombres de 1 à 3, mais carrément le libellé :-D

Essaie donc ça ;-)
// Imports
from random import *

// Saisie joueur
result_joueur = int(input("choisissez pierre = 1, feuille = 2 ou ciseaux = 3"))

// Saisie ordinateur
result = randint(1,3)

// Tests de victoire/défaite
if result == result_joueur:
    print("égalité")

if result == 1 and result_joueur == 2:
    print("le joueur a gagné")
    n+1
if result == 1 and result_joueur == 3:
    print("L'ordinateur a gagné")
    b+1
if result == 2 and result_joueur == 1:
    print("L'ordinateur a gagné")
    b+1
if result == 2 and result_joueur == 3:
    print("Le joueur a gagné")
    n+1
if result == 3 and result_joueur == 1:
    print("le joueur a gagné")
    n + 1
if result == 3 and result_joueur == 2:
    print("L'ordinateur a gagné")

// Préparation affichage résultat ordinateur
if result == 1:
    result = "pierre"
elif result == 2:
    result = "feuille"
elif result == 3:
    result = "ciseaux"

// Préparation affichage résultat joueur
if result_joueur == 1:
    result_joueur = "pierre"
elif result_joueur == 2:
    result_joueur = "feuille"
elif result_joueur == 3:
    result_joueur = "ciseaux"

// Affichage des résultats
print(result, result_joueur)

Commenter la réponse de luckydu43
0
Merci
Bonjour.

On pourrait simplifier ce travail en procédant par soustraction de valeurs, admettons que nous affections 1 pour pierre, 2 pour papier, 3 pour ciseaux.
libelles = {1:'pierre', 2:'papier', 3:'ciseaux'}

Puis procédons par soustraction de la valeur joueur par celle de l'adversaire pour voir ce que ça peut donner.
mains gagnantes
pierre vs ciseaux -> 1 - 3 -> -2
papier vs pierre -> 2 - 1 -> 1
ciseaux vs papier -> 3 - 2 -> 1

mains perdantes
pierre vs papier -> 1 - 2 >> -1
papier vs ciseaux -> 2 - 3 >> -1
ciseaux vs pierre -> 3 - 1 >> 2

On peut s'apercevoir qu'on obtient seulement 2 valeurs pour chaque mains gagantes/perdantes. Il devient alors très facile de condenser et simplifier le programme.

import random

libelles = {1:'pierre', 2:'papier', 3:'ciseaux'}

choix_joueur = int(input('choisissez pierre = 1, feuille = 2 ou ciseaux = 3 :'))
choix_ordi = random.choice(list(libelles))

resultat = choix_joueur - choix_ordi

if not resultat: # 0
    message = 'égalité !'
elif resultat in (1, -2):
    message = 'gagné !'
else:
    message = 'perdu !'
    
print('vous avez joué %s' % libelles[choix_joueur])
print('ordinateur joue %s' % libelles[choix_ordi])
print(message)
Commenter la réponse de mutyk
0
Merci
merci beaucoup :) je vais modifier selon vos dires :p
Commenter la réponse de Torivak