Bonjour, est il possible d'optimiser ces programmes?

Code :Sélectionner tout -Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import random
import numpy
 
def nbroccurences (grille,chiffre,i,j) :
    imini = i - (i%3)
    jmini = j - (j%3)
    compteur=0
    if grille[i][j]==chiffre:
        compteur = -3      #on ne compte pas wij
 
    for k in range (0,9) : #compte pour i donné (colonne)
        if grille[i][k] == chiffre :
            compteur = compteur +1
 
    for k in range (0,9): #compte pour j donné (ligne)
        if grille [k][j] == chiffre :
            compteur = compteur + 1 
 
    for k in range(imini, imini+3): #compte dans la sous-grille 
        for z in range(jmini, jmini +3) :
            if grille[k][z] == chiffre :
                compteur = compteur +1
 
    return compteur
 
def fonctioneconomique (w):#score
    a = 0
    for i in range (0,9):
        for j in range (0,9):
            a = a + nbroccurences(w,w[i][j],i,j) #formule du polycopié
 
    return 0.5*a