Afficher la somme des nombres jusqu'à un nombre entré

Baptiste16 -  
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je ne trouve pas de solution à ce programme, est-ce que quelqu'un pourrez m'aider svp ?

Ecrit une fonction qui prend en argument un nombre n, puis qui renvoie la somme des nombres de 1 à n.
Par exemple, si on tape 4, la fonction doit renvoyer 10, car 1 + 2 + 3 + 4 = 10.

Ici, il faut utiliser l'instruction return et non pas print : le programme doit renvoyer un nombre.

Merci, d'avance.

PS : C'est en python

Configuration: Windows / Edge 100.0.1185.29
A voir également:

4 réponses

mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 879
 
Bonjour

Avant de commencer

Et il faut faire attention à l'indentation, c'est primordial en Python, car en l'état ce code n'a aucun sens. Par ailleurs
return
n'est pas une fonction, donc pas de raison de mettre de parenthèses.

Explication du problème

Ensuite regardons ce que fait ton programme :
  • l2 : on itère pour
    k
    allant de
    0
    inclu à
    n+1
    exclu ;
  • l3 : on calcule
    k + 1
    mais on ne fait rien de ce résultat. C'est donc comme si on avait rien fait ;
  • l4 : on retourne
    k + n
    . À la fin de la boucle,
    k
    vaut
    n
    , donc au final ce programme retourne
    2 * n
    .


Méthode 1 : avec une boucle

C'est la méthode sur laquelle tu es partie et que jee pee te propose de corriger.

Pour rappel, en python, on peut sauver le résultat d'un calcul avec l'opérateur d'affectation
=


Exemple :

s = 3
s = s + 10 # s vaut maintenant 3 + 10 == 13
s = s + 2 # s vaut maintenant 13 +2 == 15


Sur ce principe, jee pee te propose d'introduire une variable (disons
s
comme somme), que lui a appelé accumulateur, initialisé à 0, dans lequel tu vas additionner à chaque itération la valeur de
k
.

Méthode 2 : avec
sum


Python propose une fonction, appelée
sum
qui permet de calculer à partir d'un itérable générant des valeurs numériques sa somme. Je te renvoie à ce lien pour voir comment l'utiliser.

Méthode 3 : la méthode "maths"

Cette approche proposée par (proposée par Pierr10) est la meilleure des trois car en obtient le résultat un calcul, alors que les deux méthodes précédentes nécessitent de calculer
n
sommes consécutives.

En terme de complexité, on dit que le programme calcule le résultat en O(1) alors que les deux méthodes précédentes calculent le résultat en O(n) (donc le coût de calcul croit linéairement avec la valeur de
n
).

Pour la réaliser, il suffit pour la réaliser de la formule de maths dans ta fonction python.

Bonne chance
3
Pierr10 Messages postés 13206 Date d'inscription   Statut Modérateur Dernière intervention   5 429
 
Bonjour,

Pour info, la somme des n premiers entiers se calcule avec la formule :

Σ = n(n+1)/2

Par exemple si n = 4
Σ = 4*5/2 = 10
1
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,
Commence par lire ceci : https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
puis reviens nous montrer ce que tu as essayé...
0
Baptiste16
 
J'ai essayé ceci déjà mais sans grands résultats :
def suitre(n):
for k in range(n+1):
    k+1
return (k+n)
0
jee pee Messages postés 41519 Date d'inscription   Statut Modérateur Dernière intervention   9 720
 
bonjour, il te faut un accumulateur, initialisé à zéro, pour additionner la valeur de la boucle k à chaque tour.
0