Comment faire un compteur dans une condition dans une définition
Résolu
peraro
-
peraro -
peraro -
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 :
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. |
5 réponses
-
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() -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
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
-
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 .
-
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()- as-tu fait une simple recherche "python global"?
https://www.journaldunet.fr/web-tech/developpement/1202515-python-utiliser-une-variable-globale-dans-une-fonction-au-sein-d-une-autre-fonction/
-
-
-
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