Somme des entiers successifs
Exercice
-
Compléter la fonction
somme1
ci-dessous qui prend en paramètre un entiern
positif et renvoie la somme des entiers successifs entre 1 etn
.2. Quelle précondition doit vérifier le paramètredef somme1(n): """Signature somme1(n:int)->int""" #à compléter
n
? Insérer une vérification de cette précondition au début du corps de la fonction, avec unassert precondition
oùprecondition
est un test à valeur booléenne (True
ouFalse
)
def somme1(n): backslash_newline """Signature somme1(n:int)->int""" backslash_newline #à compléterbackslash_newlinebackslash_newline# Solution 1backslash_newlinebackslash_newlinedef somme1(n): backslash_newline """Signature somme1(n:int)->int""" backslash_newline s = 0 #penser à l'initialisationbackslash_newline for k in range(1, n + 1):backslash_newline s = s + kbackslash_newline #return hors de la bouclebackslash_newline return sbackslash_newlinebackslash_newlinebackslash_newline# Solution 3 : avec vérification de la précondition n >= 0backslash_newlinebackslash_newlinedef somme1bis(n): backslash_newline """Signature somme1bis(n:int)->int""" backslash_newline assert n >= 0 #vérification de la préconditionbackslash_newline s = 0 #penser à l'initialisationbackslash_newline for k in range(1, n + 1):backslash_newline s = s + kbackslash_newline #return hors de la bouclebackslash_newline return sbackslash_newlinebackslash_newlinebackslash_newline# Solution 3 : avec la formule de Gaussbackslash_newlinebackslash_newlinedef somme1_gauss(n): backslash_newline """Signature somme1bis(n:int)->int""" backslash_newline return n * (n+1) // 2backslash_newline