Compréhension de code/fonction

inest01 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
 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.
A voir également:

1 réponse

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
inest01 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Je ne vois pas le lien avec les factorielles et je ne comprend pas ce que signifie le resultat retourne un nombre
0
trifou > inest01 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
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