IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Autre proposition de résolution?


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut Autre proposition de résolution?
    Bonjour, je commence tout juste avec Python et avec la programmation en général.

    j'aurai voulu avoir vos avis sur cet exercice que j'ai pu trouver dans le livre écrit par M Swinnen: "Écrivez un programme qui calcule les intérêts accumulés chaque années pendant 20 ans par capitalisation d'une somme de 100€ placée en banque à i=4,3%."

    Voilà comment j'ai procédé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> i=0.043
    >>> a=100
    >>> x,y=a*i,a*i
    >>> t=1
    >>> while t<=20:
    	print "intérêts","année",t,"=",y
    	t=t+1
    	x,y=y,y+(a*i)
    Cela marche, mais est-il possible de résoudre cela autrement?

  2. #2
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    oui, c'est très possible, en fait en procédant à un petit raccourcissement du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    interet=0.043
    capital=100
    for annee in range(20): #range(20) nous retourne une liste de 20 entiers partant de 0 et allant jusqu'a 20 non inclut donc 19
        capital*=interet #équivaut à capital=capital*interet
        print 'capital au bout de %i annees'%annee+1
    On pourrait en faire un fonctio aussi, mais tu verras ça un peu plus tard dans le bouquin...

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Je ne peux pas m'empêcher de faire remarquer que la question (de Swinnen, si elle est bien rapportée) est mal posée.

    «LES intérêts ACCUMULÉS CHAQUE année»
    Il y a plusieurs intérêts qui puissent être accumulés dans une année donnée ?
    Ça veut dire quoi ?

    Que faut il donner comme résultat ?
    - La liste des intérêts annuels sur 20 ans, c'est à dire pour chacune des 20 années l'intérêt qu'a produit le capital sur cette année ?
    - Ou la liste des intérêts cumulés sur 20 ans, c'est à dire pour chacune des 20 années l'intérêt produit par le capital depuis le début de la période de 20 ans ?
    - Ou l'intérêt final au bout de 20 ans ?

    Ceci dit, on peut décider soi même de ce qu'on veut calculer, mais il faut tenir compte de l'énoncé:
    «.. par capitalisation...»
    http://www.intellego.fr/soutien-scol...-interets/1941
    Capitalisation, cela veut dire qu'à l'expiration de chaque année N, quand les intérêts sont produits (c'est à dire en fait LA somme qui est appelée les intérêts... sic), ils ne sont pas retirés mais ils sont considérés comme du nouveau capital, ce qui veut essentiellement dire que les intérêts de l'année N+1 seront calculés sur la base du capital du début de l'année N augmenté des intérêts de l'année N.
    On parle alors d'intérêts composés.
    Or tu calcules des intérêts simples.

    Tu affiches les valeurs de t et y.
    x prend la valeur de y et c'est tout
    À quoi sert x ?

    Personnellement, j'appelerais taux le taux, au lieu de i (qui fait penser à intérêt),
    ci (capital initial), au lieu de a (qui fait penser à année)
    et a (année) au lieu de t.

    Pour ma part, j'utilise while quand la variable dont dépend l'arrêt est recalculée au sein de chaque tour de la boucle while et n'est pas connue avant d'y entrer.
    Dans les cas où le nombre de tours est connu ou calculable avant d'entrer dans la boucle, j'utilise plutôt for.
    Ici c'est très simple, on sait que c'est sur 20 ans, donc usage d'un Tu pourras être aussi intéressé par
    http://www.diveintopython.org/native...g_strings.html


    Sur la solution de N.tox

    - il manque des parenthèses autour de annee+1
    - il manque l'affichage de la valeur de capital !!
    -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    capital*=interet
    # signifie
    capital = capital * interêt
    Mais utilisée telle quelle, cette formule ne donne pas la bonne revalorisation du capital dans une épargne par capitalisation. La bonne est

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut
    Merci pour vos réponses.

    En fait, dans le livre de Swinnen, lorsque cet exercice est proposé, l'utilisation du "for" n'a pas encore été introduite. Seuls if, else, elif et while ont fait l'objet d'explication.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 7
    Par défaut
    salut ,

    j'ai procédé comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    # Écrivez un programme qui calcule les intérêts accumulés chaque année 
    # pendant 20 ans, par capitalisation d'une somme de 100 euros placée 
    # en banque au taux fixe de 4,3 %
     
    capital = 100
    taux = 0.043
    an = 0
     
    while an < 20 :
     
    	an = an + 1 # à chaque boucle , incrément de "an" + 1
    	capNew = capital * taux # ajoute 4.3% d'interet à son capital
    	capital = (capital + capNew) # calcul du nouveau capital avec interet
    	intAn = capital - 100
     
    	print ("année " , an ," interêt cumulé de  = " , intAn , " € ")
    C'est vrai que l'énoncé n'est pas très clair. Donc j'ai calculé le total d'interêt / an à 4.3% chaque année :

    année 1 : 100 + 4.3% = 104.3
    année 2 : 104.3 + 4.3% = 108.7849

    etc , puis j'ai soustrais le capital de base pour connaitre l'interet / an

    d'ailleurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while an < 20 :
     
    	an = an + 1 # à chaque boucle , incrément de "an" + 1
    	capNew = capital * taux # ajoute 4.3% d'interet à son capital
    	capital = (capital + capNew) # calcul du nouveau capital avec interet
    	intAn = capital - 100
    ne donne pas le même résultat que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while an < 20 :
     
    	an = an + 1 # à chaque boucle , incrément de "an" + 1
    	capNew = capital * taux # ajoute 4.3% d'interet à son capital
    	capital = (capital + capNew) -100 # calcul du nouveau capital avec interet
    et ça j'ai du mal à comprendre. Obligé d'initialiser une autre variable pour obtenir ce que je voulais.

    Edit : le corrigé de l'exercice n'existe pas dans le livre en ligne ( http://python.developpez.com/cours/a...ge=page_22#L22)

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 736
    Par défaut
    Salut,

    Citation Envoyé par piedroidor Voir le message
    C'est vrai que l'énoncé n'est pas très clair.
    Le but de l'exercice est de vous faire faire une boucle while pour construire une suite Un+1 = f(Un)
    Mais Python n'est pas un langage qui permet d'écrire cela littéralement - enfin il y a quand même des bibliothèques qui permettent de ... mais ce n'est pas le sujet -.
    Le compteur n, n+1 est joué par la variable "an" qu'on incrémente à chaque "tour".
    La valeur de Un est stocké dans "capital".

    L'histoire du calcul d'intérêt sur 20 ans n'est que pour vous aider à y raccrocher quelque chose de concret.
    Le débutant lambda n'ira pas se prendre le chou avec les "intérêts accumulés".
    Celui qui a un peu de formation financière va hurler de voir des termes aussi mal traduits.
    Ca n'a pas grande importance, le but est de programmer cette suite pour se familiariser avec cette structure de boucle.
    note: vous donner à faire de vrais calculs financiers est encore prématuré, et la boîte ne va pas fermer si votre code sort des calculs faux: relax!

    Citation Envoyé par piedroidor Voir le message
    d'ailleurs :

    ...CODE...

    ne donne pas le même résultat que

    ...CODE...

    et ça j'ai du mal à comprendre. Obligé d'initialiser une autre variable pour obtenir ce que je voulais.
    De toutes façons, si dans un cas vous écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
             capital = (capital + capNew) # calcul du nouveau capital avec interet
    et dans l'autre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
             capital = (capital + capNew) - 100 # calcul du nouveau capital avec interet
    Il y a peu de chances pour que çà donne le même résultat.
    Le soucis est de lire le commentaire, le code n'est pas encore assez familier pour que vous sachiez "valider" que çà fait bien ce que vous voulez.
    Pire, vous pouvez lire le truc 10 fois et passer à côté.

    Il n'y a que des heures de pratique à la console pour se familiariser un peu avec tout çà.
    Bonne continuation

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Résolut]Passer un objet d'une page à une autre
    Par toun1988 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 04/11/2008, 00h21
  2. Réponses: 17
    Dernier message: 05/12/2007, 17h56
  3. Tester site sous une autre résolution
    Par black-out dans le forum Webdesign & Ergonomie
    Réponses: 2
    Dernier message: 05/02/2007, 10h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo