Ma fonction ne marche pas

Résolu
JFL -  
 JFL -
Bonjour,

Je suis débutant en python et me familiarise avec les fonctions . Qui pourrait m'aider car ma fonction jeu ne donne aucune réponse et je ne vois pas ce qui cloche.

Merci d'avance.

import random

s = 2001
random.seed(s)

a = 0
b = 1
c = 2
d = 1
e= 0

coup_o= random.randint(0,2)
coup_j=(a,b,c,d,e)

def jeu ():
    score_o = 0
    score_j = 0  
    # calculscore
    if coup_j == 0 and coup_o == 2 or coup_j == 1 and coup_o == 0 or coup_j == 2 and coup_o == 1:
            score_j = score_j + 1
            print ("gagne",score_j)
    elif coup_j == 0 and coup_o== 1 or coup_j == 1 and coup_o == 3 or coup_j == 2 and coup_o == 0:
            score_ordi = score_ordi + 1
            print ("perd",score_ordi + score_j)
    elif coup_j == 0 and coup_o == 0 or coup_j == 1 and coup_o == 1 or coup_j == 2 and coup_o == 2:
            score_j = score_j
            print("egal",score_o + score_j)
    return 

for i in coup_j:
    jeu()


Configuration: Windows / Firefox 95.0
A voir également:

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
merci de préciser le langage quand tu utilises les balises de code, comme expliqué: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Ton code ne donne aucune réponse parce que ton
if
ne couvre pas toutes les combinaisons.
Pour t'en convaincre, ajoute
    else:
        print("autre")
avant la ligne où il y a le
return
:
1
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
SI j'étais toi, je ferais deux autres choses également:

1) ajouter ceci tout au début de la fonction:
    print("coups:" + str(coup_o) + " et "+str(coup_j))


2) commencer par des exercices plus simples
1
jee pee Messages postés 41501 Date d'inscription   Statut Modérateur Dernière intervention   9 711
 
Bonjour,

Tu as une boucle for i et tu ne passes pas i à ta fonction, et tu ne l'utilises pas. Tu prends coup_j qui est une liste, pas une valeur unique, ce devrait être i.

Les 2 totaux des scores ne devraient pas être dans la boucle, par contre le coup_o devrait être dans la boucle pour être lancé à chaque fois.

PS : Pour la mise en forme des sources, au dessus de la zone d'édition de tes messages, il y a des icônes pour l'enrichissement du texte. Celle qui a cet aspect
<> ▼
permet d'appliquer au code, suivant une liste de valeurs, le format correspondant à sa nature (C, Python, Shell, ...).
Un petit tuto là : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
JFL
 
Merci pour tes suggestions. Effectivement je ne sais pas comment m'en sortir pour faire une boucle quand on a affaire à un tuple avec une série de valeurs à tester successivement. Où puis je trouver une méthode à appliquer.
0
jee pee Messages postés 41501 Date d'inscription   Statut Modérateur Dernière intervention   9 711
 
Pour apprendre à savoir ce que fait ton programme, par où il passe, et ce que cotient chaque variable, il faut mettre des print, des fois après chaque ligne, c'est cela faire du debug quand le programme ne fonctionne pas comme on veut.

Ta boucle
for i in coup_j:
    jeu() 
est correcte, i va prendre une par une les valeurs de la liste coup_j. Mais alors dans ta fonction, ce n'est pas coup_j qu'il faut utiliser, mais i, qui est le jeu du joueur

0
JFL
 
Ah ok c'est top: enfin je réalise merci encore pour tes explications.
0