2010-03-04 5 views
1

Comment faire la deuxième ligne de mon argument principal?Comment imprimer le nombre de notes à jouer?

def main(): 
    pic= makePicture(pickAFile()) 
    ### It will print the number of notes to be played(which is the number of pixels in the pic divided by 16, why?)### 
    listenToPicture(pic) 


def listenToPicture(pic): 
    show(pic) 
    w= getWidth(pic) 
    h= getHeight(pic) 
    for i in range(0, w, 4): 
     for j in range(0, h, 4): 
      for px in getPixels(pic):   
       r= getRed(px) 
       g= getGreen(px) 
       b= getBlue(px) 
       tot= (r+g+b)/9 
       playNote= tot + 24 
+1

Nombre de pixels = largeur fois hauteur (les deux sont supposés être en pixels). Vous semblez avoir des fonctions qui vous donnent la largeur et la hauteur, ainsi vous pouvez calculer le nombre de pixels. Ou vouliez-vous quelque chose d'autre? –

+0

Je pense que vous trouverez plus facile si vous déplacez l'impression du nombre de notes de 'main()' à listenToPicture (pic) '. – Edd

Répondre

1

en fonction listenToPicture(), vous avez ce code:

w= getWidth(pic) 
h= getHeight(pic) 
for i in range(0, w, 4): 
    for j in range(0, h, 4): 
     .... 

étrangement, i et j ne sont pas utilisés dans le reste du code, mais semblent expliquer pourquoi le nombre de notes sont le nombre de pixels divisés par 16. La clé est dans range(0, w, 4) et range(0,h,4). Savez-vous ce qu'ils veulent dire? quelles sont les 2 boucles performantes? (si vous avez besoin, dessinez une petite image sur un papier quadrillé, et exécutez votre algorithme à la main)

Questions connexes