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

3 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
  2. jee pee Messages postés 9444 Date d'inscription   Statut Modérateur Dernière intervention   9 981
     
    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
    1. 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
  3. jee pee Messages postés 9444 Date d'inscription   Statut Modérateur Dernière intervention   9 981
     
    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
    1. JFL
       
      Ah ok c'est top: enfin je réalise merci encore pour tes explications.
      0