Compréhension de code/fonction

inest01 Messages postés 2 Statut Membre -  
 trifou -
Bonjour,

je dois documenter la fonction suivante et donc comprendre ce que la fonction rend or je ne comprend pas du tout :
def foo(p,k):
    num =1
    den = 1
    i = 1
    while i <= k:
        num =num * (p -i + 1)
        den =den * i
        i = i + 1
    return num // den


merci d'avance pour votre aide

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

Merci d'y penser dans tes prochains messages.

1 réponse

  1. trifou
     
    Bonsoir,

    Je suis comme toi, et en faisant de simples essais et print dans la fonction, le résultat saute aux yeux.

    Allez un indice, le résultat retourne un nombre, qui en en math se calcule en utilisant des factorielles.
    0
    1. inest01 Messages postés 2 Statut Membre
       
      Je ne vois pas le lien avec les factorielles et je ne comprend pas ce que signifie le resultat retourne un nombre
      0
      1. trifou > inest01 Messages postés 2 Statut Membre
         
        foo(p, k) 
        => p! ÷ ((p-k)! × k!)

        Tu sais, tu peux modifier cette fonction pour comprendre ce qu'il se passe dedans, et faire des tests avec.

        def foo(p,k):
            num =1
            den = 1
            i = 1
            print('p :{}, k :{}'.format(p, k))
            while i <= k:
                num =num * (p -i + 1)
                den =den * i
                i = i + 1
                print('i :{}, num :{}, den : {}'.format(i, num, den))
            return num // den
        
        
        print(foo(10, 2))
        print('-' * 20)
        print(foo(10, 3))
        print('-' * 20)
        print(foo(10, 4))
        print('-' * 20)
        print(foo(10, 5))
        0