Exercice Python - boucles


  • P

    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.


  • N
    Modérateurs

    @pik15 Bonsoir,

    Introduit la somme s
    puis effectue le calcul s+nombre
    puis faire un test sur s par rapport à la valeur "cap"


  • P

    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.


  • N
    Modérateurs

    @pik15

    Combien obtiens tu à la somme?


  • P

    Le programme python me donne 118 098 et lorsque je fais le calcul moi-même, j'obtiens 59 048.


  • N
    Modérateurs

    @pik15

    Bizarre, 118098 correspond au 11ème nombre.


  • B

    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 :
    Sans titre.jpg

    Tu remarqueras que j'ai inversé certaines lignes dans la routine ...


  • P

    Effectivement, il est possible que j'ai fais une erreur de frappe.
    Merci beaucoup, ça marche enfin!
    Bonne journée.


  • P

    Serait-il possible de m'aider pour la question 4 s'il-vous-plaît?


  • N
    Modérateurs

    @pik15

    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".


  • B

    ... et aussi changer de type de boucle.

    Boucle "while" au lieu de boucle "for".


  • P

    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?


  • B

    Bonjour,

    Compare ton programme à celui-ci :

    Sans titre.jpg

    Et essaie de comprendre pourquoi ton programme ne fait pas ce qui est demandé.


  • P

    Merci beaucoup!
    Bonne journée


Se connecter pour répondre