Somme des entiers successifs

Exercice

  1. Compléter la fonction somme1 ci-dessous qui prend en paramètre un entier n positif et renvoie la somme des entiers successifs entre 1 et n.

    def somme1(n): 
        """Signature somme1(n:int)->int"""  
        #à compléter
    
    2. Quelle précondition doit vérifier le paramètre n ? Insérer une vérification de cette précondition au début du corps de la fonction, avec un assert preconditionprecondition est un test à valeur booléenne (True ou False)

benchmark = ['somme1(0) == 0', backslash_newline'somme1(1) == 1', backslash_newline'somme1(5) == 15',backslash_newline'somme1(100) == 5050']backslash_newlinebackslash_newline5/5

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