Inscription / Connexion Nouveau Sujet
Niveau seconde
Partager :

Les boucles sur python

Posté par
pouchkii
20-11-22 à 16:38

Bonjour a tous, j'espère que vous allez bien. J'ai du mal a faire un programme pour un exercice d'SNT. C'est celui-ci :

Certains racontent que le jeune Carl Friedrich Gauss avait un jour été puni et devait calculer la somme de
tous les entiers de 1 à 100 pendant sa récréation.
Le jeune homme, un peu plus doué en maths que la moyenne, a trouvé une formule et terminé le calcul
rapidement, ce qui lui a permis de profiter de sa récréation.
1°) Écrivez un programme qui calcule la somme des entiers de 1 à n où n est choisi par l'utilisateur.

2°) Testez ce programme avec différentes valeurs de n et essayez de trouver la formule qu'aurait
(re)trouvé Gauss.

Merci d'avance

Posté par
Leile
re : Les boucles sur python 20-11-22 à 16:59

bonjour,

qu'as tu fait ?

Posté par
pouchkii
re : Les boucles sur python 20-11-22 à 17:09


Je n'ai rien fait parce que je n'ai pas compris comment faire. Je ne vois pas comment je peux répondre avec une boucle et comment écrire le programme.
Merci

Posté par
Leile
re : Les boucles sur python 20-11-22 à 17:12

laisse python de coté pour l'instant.

si je te dis de compter la somme de 1 à 5  par exemple
1  2   3   4   5
le plus simple c'est de commencer par 1+2 = 3
ensuite tu ajoutes 3, ca donne ?
ensuite...      

Posté par
pouchkii
re : Les boucles sur python 20-11-22 à 17:23

1+2=3
3+3=6
6+4=10
et 10+5=15

Posté par
Leile
re : Les boucles sur python 20-11-22 à 17:30

parfait.
je pourrais dire aussi : au départ, il n'y a rien dans la somme.
j' y ajoute  1  : il y a 1  dans la somme.
j'y ajoute 2  :   il y a 3 dans la somme
j'y ajoute 3  :   il y a 6  dans la somme
j'y ajoute 4 :
etc...
tu vois que c'est toujours la même ligne ou presque : plutot que de répeter 5 lignes, on va répeter 5 fois la même ligne : on va faire une boucle.

la ligne qu'on va répéter ("j'ajoute à Somme"..), à ton avis, elle s'écrit comment en python ?

Posté par
pouchkii
re : Les boucles sur python 20-11-22 à 17:39

Je pense qu'on écrit
somme=somme+1

Je ne suis pas sure par contre et je ne sais pas comment transformer ca en boucle.

Posté par
Leile
re : Les boucles sur python 20-11-22 à 17:44

somme = somme +  quelque chose    c'est bien !
mais on ajoute pas 1 à chaque fois, on ajoute le nombre suivant.

la boucle : on va choisir si c'est une boucle for  ou une boucle while.
Est ce qu'on sait combien de fois on va devoir ajouter quelque chose à somme ?

Posté par
pouchkii
re : Les boucles sur python 20-11-22 à 17:58

Oui je pense 100 fois ? Donc c'est une boucle for il me semble.

Posté par
Leile
re : Les boucles sur python 20-11-22 à 18:23

c'est  une boucle for, en effet.
on va la faire 100  fois si on compte jusque 100,   et n fois si on compte jusque n

en python ça donne
for   i  in range (1, n+1) :
  ==>   i va commencer à 1, et à chaque tour, il va progresser : il vaudra 2, puis 3, puis 4, etc... et ca s'arretera quand il aura ajouté n
(en python, la borne supérieure est exclue).
c'est bien ce qu'on veut ajouter à somme, n'est ce pas ?

donc à présent, sais tu écrire un premier jet de ton algorithme ?
je te résume en langage naturel, et tu traduis en python, d'accord ?

somme prend la valeur 0
pour   i  allant de 1  à  n   faire
              ajouter i  à somme

afficher somme

à toi !



                

Posté par
pouchkii
re : Les boucles sur python 20-11-22 à 18:29

Je pense que c'est comme ca par contre est-ce que vous pouvez m'expliquer quelle est l'utilité de i ? Merci beaucoup.

somme=0
for i in range (1,n+1)
          somme=somme+i
print(somme)

Posté par
Leile
re : Les boucles sur python 20-11-22 à 18:38


i prend la valeur 1, puis 2, puis 3, etc....   jusque n
et c'est justement ce que tu veux ajouter à la somme à chaque tour.
il faut garder n intact, sinon, tu ne sauras plus arreter la boucle for.
(pour faire tourner une boucle for, il faut forcément une variable qui progresse, on l'appelle souvent i     )


ce que tu as écrit est très bien.
juste un truc : il faut  :   à la fin de la ligne for.

et puis, là, il faut encore une instruction input pour qu'on puisse donner la valeur de n

complète cet algo, programme le, essaie de le faire tourner avec n=5 , il doit te retourner 15!

vas y,
ensuite, on verra la formule de la question 2.

Posté par
pouchkii
re : Les boucles sur python 20-11-22 à 18:50

n=int(input("Choisissez un nombre"))
somme=0
for i in range (1,n+1):
    somme=somme+i
print(somme)

J'ai corrigé et ca a marché pour 5. Merci beaucoup !
Pour la formule j'ai vu que le résultat était 5050 mais je n'ai pas compris d'ou il vient.

Posté par
Leile
re : Les boucles sur python 20-11-22 à 18:57

ton algo fonctionne, c'est bien !
pour n=5, il te retourne   15
c'est que la somme des nombres de 1 à 5 vaut 15
pour n=100, il te retourne 5050
c'est que la somme des nombres de 1 à 100 vaut 5050

la formule qu'on te demande, c'est une formule avec n, qui donnerait les mêmes résultats, et qui marcherait pour tous les n...


on va continuer à raisonner avec 5, puis on verra avec n.
je te donne une piste :

Somme =  1   +   2    +   3    +  4   +  5
Somme =  5   +  4    +   3     +  4   +  1
si tu additionnes les deux lignes, colonne par colonne, qu'est ce que tu obtiens ?

Posté par
pouchkii
re : Les boucles sur python 20-11-22 à 19:05

Ca donne 6 a chaque fois. Est-ce qu'il faut faire 6 x un nombre (peut-être 50 ou 100?)

Posté par
Leile
re : Les boucles sur python 20-11-22 à 19:21

"Ca donne 6 a chaque fois"   oui, mais j'aurais aimé que tu conserves les colonnes, comme ça  :

somme + somme   =   (5+1)  + (4+2) + (3+3) + (2+4)  + (1+5)
==>
2 * somme   =  5  *   ( 6)
somme    =    5 * 6/2
donc quand  n=5   on arrive à  somme =  5*6 /2

si on fait la meme chose avec n=10 par exemple,
on arrive à  somme =  10 * 11/2

alors à ton avis avec n,  que peux tu écrire ?
somme = ?

Posté par
pouchkii
re : Les boucles sur python 20-11-22 à 19:30

Je pense que c'est :
n*100/2

Posté par
Leile
re : Les boucles sur python 20-11-22 à 19:37

  pour n = 5    on  a   somme =  5 *  6   /   2  
il n'y a pas de 100, là....
mais 6  c'est   5+1  ...

Posté par
pouchkii
re : Les boucles sur python 20-11-22 à 19:40

Ah oui ! Donc c'est : n*n+1/2

Posté par
Leile
re : Les boucles sur python 20-11-22 à 19:42

voilà !

somme =  n(n+1)/2  

tu as trouvé !

tu as d'autres questions ?

Posté par
pouchkii
re : Les boucles sur python 20-11-22 à 19:43

Non, merci beaucoup j'ai tout compris grâce à vous ! Merci pour votre temps.

Posté par
Leile
re : Les boucles sur python 20-11-22 à 19:55

je t'en prie, bonne soirée

Posté par
malou Webmaster
re : Les boucles sur python 05-12-22 à 09:47

pouchkii bonjour

Le site a vu que tu n'avais pas fermé tes deux autres comptes et te bannit celui-ci. Ferme tes deux autres comptes. Un seul compte suffit, tu peux poser toutes les questions que tu veux avec un seul compte.
Quand tu l'auras fait, mets moi un message (mail dans mon profil), je ferai le nécessaire pour que tu puisses poster à nouveau avec le compte pouchkii



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !