Comment faire un compteur dans une condition dans une définition

Résolu/Fermé
peraro - Modifié le 10 avril 2021 à 11:37
 peraro - 10 avril 2021 à 17:20
Bonjour,
je cherche à savoir comment savoir combien de fois une condition a été exécuté dans une définition :
J'ai créé un programme qui python qui simule le résultat d'un match de foot ( victoire de l'équipe à domicile , à l'extérieur ou match nul) seulement ce programme peu donner des résultat différents pour un même match car c'est IA basé en partie sur le hasard .
J'ai donc ajouté une boucle qui fait que le programme s'exécute 1000 fois mais j'aimerai avoir un compteur qui m'indique combien de fois le programme trouve la victoire de l'équipe à domicile etc ...

voici un résumé du programme :

c = 1000

while c < 1000 :

  def 1:
    blabla

 def 2 :
   if blabla :
      print("v de l'équipe à domicile") <-- comment mettre un compteur ici?
   if blabla
      print("v de l'équipe à l'exterieur")<-- là
   else blabla
        print("match nul)<-- et là



code complet :

import numpy as np
import pandas

c = 0

while c < 1000 :
  x_entrer = np.array(([3,2,0,1,2,2,2,3,0,2,2,1,3,0,2,4,6,0,2,4,4], [3,0,2,2,1,2,1,1,3,2,1,2,3,1,1,2,2,6,4,2,4], [2,2,1,2,2,1,1,4,0,2,3,0,1,1,3,2,8,0,4,6,0], [2,2,1,3,2,0,1,2,2,2,3,0,1,3,1,2,4,4,0,6,4], [1,3,1,1,1,3,3,1,1,0,2,3,2,1,2,6,2,2,6,4,0], [1,0,4,2,1,2,0,1,4,2,1,2,1,0,4,0,2,8,4,2,4], [1,2,2,3,1,1,0,2,3,2,1,2,1,1,3,0,4,6,4,2,4], [2,3,0,2,1,2,0,4,1,1,1,3,3,2,0,0,8,2,6,2,2], [1,2,2,2,0,3,2,2,1,3,0,2,0,1,4,4,4,2,4,0,6], [3,0,2,0,0,5,4,1,0,0,0,5,3,2,0,8,2,0,10,0,0], [3,2,0,3,0,2,3,1,1,0,2,3,1,2,2,6,2,2,6,4,0]), dtype=float)
  y = np.array(([0], [1], [1], [0.5], [0], [0.5], [1], [0.5], [1], [0]), dtype=float)
  x_entrer = x_entrer/np.amax(x_entrer, axis=0) 

  X = np.split(x_entrer, [10])[0]
  xPrediction = np.split(x_entrer, [10])[1]

  class Neural_Network(object):
    def __init__(self):

      self.inputSize = 21
      self.outputSize = 1
      self.hiddenSize = 22 

      self.W1 = np.random.randn(self.inputSize, self.hiddenSize) 
      self.W2 = np.random.randn(self.hiddenSize, self.outputSize) 
  

    def forward(self, X):

      self.z = np.dot(X, self.W1)
      self.z2 = self.sigmoid(self.z)
      self.z3 = np.dot(self.z2, self.W2)
      o = self.sigmoid(self.z3)
      return o

    def sigmoid(self, s):
      return 1/(1+np.exp(-s))

    def sigmoidPrime(self, s):
      return s * (1 - s)

    def backward(self, X, y, o):

      self.o_error = y - o
      self.o_delta = self.o_error*self.sigmoidPrime(o)

      self.z2_error = self.o_delta.dot(self.W2.T)
      self.z2_delta = self.z2_error*self.sigmoidPrime(self.z2) 

      self.W1 += X.T.dot(self.z2_delta)
      self.W2 += self.z2.T.dot(self.o_delta)

    def train(self, X, y):

    def predict(self):
      
      print("")
      if(self.forward(xPrediction) < (1/3)):
        print("\033[32mVictoire de l'équipe à domicile ! \033[0m\n")<--ici
      elif(self.forward(xPrediction) > (2/3)):   
        print("\033[31mVictoire de l'équipe à l'extérieur ! \033[0m\n")<-- ici
      elif(self.forward(xPrediction) == (1/3)):
        print("Victoire de l'équipe à domicile ou match nul ! \n")
      elif(self.forward(xPrediction) == (1/3)):
        print("Victoire de l'équipe à l'extérieur ou match nul ! \n")
      else :
        print("\033[33mMatch nul ! \033[0m\n")<-- ici

      

  NN = Neural_Network()

  for i in range(1000):
      NN.train(X,y)

  NN.predict()
  c=c+1



Configuration: Linux / Firefox 87.0



EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

5 réponses

Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
10 avril 2021 à 09:38
Bonjour,


L'indentation étant importante en Python, merci de copier/coller ici ton code complet avec les balises de code
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Visuellement, ça doit ressembler à ceci (avec la coloration syntaxique) :

def test():
    print('test')

test()
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
10 avril 2021 à 10:22
bonjour peut-être ainsi:
if(self.forward(xPrediction) < (1/3)):
    nvictdom += 1
    print("\033[32mVictoire de l'équipe à domicile ! \033[0m\n")<--ici

dans le programme principal, avant le premier appel:
nvictdom = 0
0
Le problème c'est que je ne peut pas définir nvictdom en dehors de la définition predict et que si je définie nvicdom dans la définition predict , nvictdom va se réinitialiser à zéro a chaque fois que la fonction va être effectuer .
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
10 avril 2021 à 11:07
il faut ajouter une declaration
global
dans la fonction, exemple:
def inc():
    global compteur
    compteur += 1
    print(compteur)
compteur=0
for i in range(3):
    inc()
0
peraro > yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024
10 avril 2021 à 11:24
merci je vais essayer
j'ai déja vu cette déclaration mais je n'ai pas compris ce qu'elle fait
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471 > peraro
10 avril 2021 à 11:40
0
peraro > yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024
10 avril 2021 à 11:46
Oui je crois que j'ai compris ça m'a l'aire d'être la solution .
0
peraro > peraro
10 avril 2021 à 17:20
Ca y est mon programme marche grâce à la déclaration global merci ( -;
0
faut-il que je repense entièrement mon programme dans ce cas ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
j'ai remis le code :

import numpy as np
import pandas

c = 0

while c < 1000 :
  x_entrer = np.array(([3,2,0,1,2,2,2,3,0,2,2,1,3,0,2,4,6,0,2,4,4], [3,0,2,2,1,2,1,1,3,2,1,2,3,1,1,2,2,6,4,2,4], [2,2,1,2,2,1,1,4,0,2,3,0,1,1,3,2,8,0,4,6,0], [2,2,1,3,2,0,1,2,2,2,3,0,1,3,1,2,4,4,0,6,4], [1,3,1,1,1,3,3,1,1,0,2,3,2,1,2,6,2,2,6,4,0], [1,0,4,2,1,2,0,1,4,2,1,2,1,0,4,0,2,8,4,2,4], [1,2,2,3,1,1,0,2,3,2,1,2,1,1,3,0,4,6,4,2,4], [2,3,0,2,1,2,0,4,1,1,1,3,3,2,0,0,8,2,6,2,2], [1,2,2,2,0,3,2,2,1,3,0,2,0,1,4,4,4,2,4,0,6], [3,0,2,0,0,5,4,1,0,0,0,5,3,2,0,8,2,0,10,0,0], [3,2,0,3,0,2,3,1,1,0,2,3,1,2,2,6,2,2,6,4,0]), dtype=float)
  y = np.array(([0], [1], [1], [0.5], [0], [0.5], [1], [0.5], [1], [0]), dtype=float)
  x_entrer = x_entrer/np.amax(x_entrer, axis=0) 

  X = np.split(x_entrer, [10])[0]
  xPrediction = np.split(x_entrer, [10])[1]

  class Neural_Network(object):
    def __init__(self):

      self.inputSize = 21
      self.outputSize = 1
      self.hiddenSize = 22 

      self.W1 = np.random.randn(self.inputSize, self.hiddenSize) 
      self.W2 = np.random.randn(self.hiddenSize, self.outputSize) 
  

    def forward(self, X):

      self.z = np.dot(X, self.W1)
      self.z2 = self.sigmoid(self.z)
      self.z3 = np.dot(self.z2, self.W2)
      o = self.sigmoid(self.z3)
      return o

    def sigmoid(self, s):
      return 1/(1+np.exp(-s))

    def sigmoidPrime(self, s):
      return s * (1 - s)

    def backward(self, X, y, o):

      self.o_error = y - o
      self.o_delta = self.o_error*self.sigmoidPrime(o)

      self.z2_error = self.o_delta.dot(self.W2.T)
      self.z2_delta = self.z2_error*self.sigmoidPrime(self.z2) 

      self.W1 += X.T.dot(self.z2_delta)
      self.W2 += self.z2.T.dot(self.o_delta)

    def train(self, X, y):

    def predict(self):
      
      print("")
      if(self.forward(xPrediction) < (1/3)):
        print("\033[32mVictoire de l'équipe à domicile ! \033[0m\n")
       #compteur victoiredom
      elif(self.forward(xPrediction) > (2/3)):   
        print("\033[31mVictoire de l'équipe à l'extérieur ! \033[0m\n")#<-- ici
        #compteur victoireextérieur
      else :
        print("\033[33mMatch nul ! \033[0m\n")#<-- et ici
        #compteur matchnul

  NN = Neural_Network()

  for i in range(1000):
      NN.train(X,y)

  NN.predict()
  c=c+1
0