Probleme programme pierre feuille ciseaux
Résolu
Bonjour, j'ai quelque probleme avec mon programme de pierre feuille ciseaux,
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)
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
3 réponses
-
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)