Exercice Python - boucles
-
Ppik15 dernière édition par
Bonjour, j'aurai besoin d'aide pour cet exercice python:
1) Ecrire un programme qui affiche une suite de 10 nombres dont le premier est un nombre
demandé en début d’exécution et dont chacun est ensuite le triple du précédent.
2) Compléter ce programme pour qu’il affiche la somme de ces 10 nombres.
3) Tester votre programme avec les valeurs initiales 1 et 0.21 et vérifier les résultats obtenus en
effectuant les calculs avec la calculatrice.
4) Modifier le programme pour qu’il calcule les sommes successives des termes à chaque fois
triples du précédent et s’arrête quand la somme dépasse une valeur « cap » donnée. Il devra
commencer par demander les valeurs du premier terme et tester s’il est positif (ou s’arrêter)
et de la valeur cap à atteindre.
La conclusion devra apparaitre sous cette forme :
Avec un premier terme égal à …, la somme des triples successifs dépassera … au bout de …
termes et vaudra …Voilà ce que j'ai fais:
from lycee import*
nombre=demande("Saisir votre nombre de départ:")
for k in range(10):
print(nombre, end=" ")
nombre*=3
Je ne comprends pas à partir du moment où il faut calculer la somme.
Merci d'avance.
-
@pik15 Bonsoir,
Introduit la somme s
puis effectue le calcul s+nombre
puis faire un test sur s par rapport à la valeur "cap"
-
Ppik15 dernière édition par
from lycee import*
s=0
nombre=demande("Saisir votre nombre de départ:")
for k in range(10):
print(nombre, end=" ")
nombre*=3
s=s+nombre
print(s)Comme ça? Car lorsque j'essaie avec la valeur ''2'', la somme qu'affiche Python n'est pas la même que je trouve en faisant le calcul à la main.
-
Combien obtiens tu à la somme?
-
Ppik15 dernière édition par
Le programme python me donne 118 098 et lorsque je fais le calcul moi-même, j'obtiens 59 048.
-
Bizarre, 118098 correspond au 11ème nombre.
-
BBlack-Jack dernière édition par
Bonjour,
Tu dis "118 098 et lorsque je fais le calcul moi-même, j'obtiens 59 048."
Je mettrais ta tête à couper que ton 118 098 est plutôt 118 096.C'est parce que il y a une erreur de raisonnement dans ton algo.
Ecrit ainsi, la somme se fait une fois de trop.Voila un programme qui fonctionne (probablement pas avec le même version de Python que la tienne ... à toi d'adapter :
Tu remarqueras que j'ai inversé certaines lignes dans la routine ...
-
Ppik15 dernière édition par
Effectivement, il est possible que j'ai fais une erreur de frappe.
Merci beaucoup, ça marche enfin!
Bonne journée.
-
Ppik15 dernière édition par
Serait-il possible de m'aider pour la question 4 s'il-vous-plaît?
-
Pour la question 4,
il faut ajouter après le nombre saisi, un test pour vérifier si le nombre est négatif,
Ensuite dans la boucle, il faut ajouter un test pour vérifier si le nombre est supérieur à la valeur "cap".
-
BBlack-Jack dernière édition par
... et aussi changer de type de boucle.
Boucle "while" au lieu de boucle "for".
-
Ppik15 dernière édition par
Bonjour, j'ai fais cela:
from lycee import*
s=0
nombre=demande("Saisir votre nombre de départ:")
cap=demande("Saisir la valeur cap à atteindre:")
if (nombre<0):
exit()
while s<cap:
s=s+nombre
print(nombre, end=" ")
nombre*=3
print()
print("Avec un premier égal à",nombre,", la somme des triples successifs dépassera",cap,"au bout de ....termes et vaudra",s)Mais ce qu'affiche Python n'est pas la réponse attendue, pouvez-vous me donner des indications s'il-vous-plaît?
-
BBlack-Jack dernière édition par
Bonjour,
Compare ton programme à celui-ci :
Et essaie de comprendre pourquoi ton programme ne fait pas ce qui est demandé.
-
Ppik15 dernière édition par
Merci beaucoup!
Bonne journée