Seite 1 von 1

Zinsen

Verfasst: Dienstag 21. Januar 2014, 19:27
von sbNoName
Hi:)

Ich wollte eigentlich nur ein ganz leichtes Programm schreiben, für den Matheunterricht, mit dem man Zinsen ausrechnen kann. Naja ich dachte zumindest es wäre leicht... :lol:

Die Aufgabe:
Ein Junge bekommt Jährlich, seit seiner Geburt, X€ auf sein Sparkonto eingezahlt. Der Zinssatz ist Y%. Die Laufzeit des Sparkontos beträgt Z Jahre.
z.B.:
Ein Junge bekommt Jährlich, seit seiner Geburt, 1200€ auf sein Sparkonto eingezahlt. Der Zinssatz ist 5%. Die Laufzeit des Sparkontos beträgt 21 Jahre.

Wollte eigentlich schnell n paar Integerboxen von Easygui einfügen... Aber die haben weder Kommazahlen, Prozentzahlen und haben einen Maximalwert von 99... Kennt jemand ein Gui wo ich diese Aufgabe ganz leicht mit machen könnte? :D
Danke im Vorraus!

Re: Zinsen

Verfasst: Dienstag 21. Januar 2014, 19:33
von /me
sbNoName hat geschrieben:Kennt jemand ein Gui wo ich diese Aufgabe ganz leicht mit machen könnte?
Muss es ein GUI-Tool sein? input bzw. raw_input (bei Python 2) funktionieren doch prima.

Re: Zinsen

Verfasst: Dienstag 21. Januar 2014, 19:37
von BlackJack
@sbNoName: Ich würde ja erst einmal die *Aufgabe* lösen. Und dann erst eine GUI dafür schreiben. Da kannst Du auch Zeichenketten eingeben lassen und die dann in Zahlen umwandeln.

Re: Zinsen

Verfasst: Dienstag 21. Januar 2014, 19:41
von sbNoName
Die Lösung habe ich ja schon :wink:

Nach dem 21. Jahr sollten es 50557,86 € sein.. Wenn ich keinen Fehler gemacht habe :D

@/me was meinst du genau mit raw_input?.. Benutze Phyton 2.7

Re: Zinsen

Verfasst: Dienstag 21. Januar 2014, 19:46
von BlackJack
@sbNoName: Damit ist die Funktion mit dem Namen `raw_input()` gemeint. Vielleicht solltest Du mal ein Grundlagentutorial durcharbeiten. :-)

Re: Zinsen

Verfasst: Dienstag 21. Januar 2014, 20:11
von sbNoName
So habe mir das angeschaut aber irgendwie habe ich ein Problem mit dem String

Hoffe das kann ich einfach so machen (das ist das Programm):

Code: Alles auswählen

import easygui

easygui.msgbox ('Dieses Programm rechnet ihnen ihre Zinsen aus')

zaehler = 0
x = 0

a = raw_input('Wieviel werden Jährlich auf das Konto eingezahlt? ')
b = raw_input('Wieviele Jahre wird das Geld angelegt? ')
c = raw_input('Wieviel Zinsen bekommen sie? ')

if b!=zaehler:
    a+a
    Endbetrag = a*c
    zaehler = zaehler +1
    

if b==zaehler:
    easygui.msgbox('Du hast ' +Endbetrag+ '€')

Endbetrag = str(x)

Re: Zinsen

Verfasst: Dienstag 21. Januar 2014, 20:24
von BlackJack
@sbNoName: Du musst die Zeichenkette(n) natürlich in Zahlen umwandeln wenn Du damit rechnen willst.

Auf 50557,86 komme ich übrigens nicht, und die Aufgabe selbst ist auch nicht wirklich eindeutig formuliert. Das da jährlich ein fester Betrag eingezahlt wird, ist IMHO nicht wirklich ersichtlich aus dem Aufgabentext.

Re: Zinsen

Verfasst: Dienstag 21. Januar 2014, 20:27
von sbNoName
Es waren auch 5,95% in meiner Schulaufgabe, sorry!

Dann google ich mal weiter :)

Re: Zinsen

Verfasst: Dienstag 21. Januar 2014, 20:40
von /me
sbNoName hat geschrieben:Dann google ich mal weiter :)
"Warum in die Ferne schweifen? Sieh, das Gute liegt so nah!" (nach J. W. von Goethe). Oder in diesem Fall: Warum googlen, die Dokumentation ist doch gleich um die Ecke.

Die für dich passenden Funktionen dürften int und float sein.

Re: Zinsen

Verfasst: Dienstag 21. Januar 2014, 20:42
von sbNoName

Code: Alles auswählen

import easygui

easygui.msgbox ('Dieses Programm rechnet ihnen ihre Zinsen aus')

zaehler = 1
endbetrag = 0

a = int(raw_input('Wieviel werden Jährlich auf das Konto eingezahlt? '))
b = int(raw_input('Wieviele Jahre wird das Geld angelegt? '))
c = float(raw_input('Wieviel Zinsen bekommen sie? '))

if b!=zaehler:
    a+a
    endbetrag = a*c
    zaehler = zaehler +1
    
if b==zaehler:
    easygui.msgbox('Du hast ' +endbetrag+ '€')
habe ich auch schon eingesetzt gehabt...
Aber Python will erst garnicht den if Befehl ausführen...

Ob zaehler 1 oder zaehler 0 es ändert sich nichts...

Re: Zinsen

Verfasst: Dienstag 21. Januar 2014, 20:50
von /me
Das ist aber extrem verhunzter Code. Sagtest du nicht, du hättest die Logik schon? Ich vermisse im Code eine Schleife und a+a ist völlig sinnlos.

Mal abgesehen davon, dass der Code falsch ist: Unter welchen Umständen rechnest du denn damit, dass die Bedingung für das if-Statement erfüllt wird?

Re: Zinsen

Verfasst: Dienstag 21. Januar 2014, 20:51
von Hyperion
sbNoName hat geschrieben: Aber Python will erst garnicht den if Befehl ausführen...
Ich denke schon, dass Python den Befehl abarbeitet - es kann natürlich sein, dass die Auswertung des Ausdrucks False ergibt und damit der Rumpf der if-Anweisung nicht betreten wird.

Zeiel 15 ist imho ziemlich überflüssig - trägt sie doch nichts zur Berechnung bei!

Aber ich vermute mal, dass Deine Rechnung an sich noch falsch ist.

Auch wenn es schon so oft gesagt worden ist: Lass doch erst einmal diese ganzen GUI-Boxen weg und zunächst *auch* die Eingaben durch den Benutzer. Baue Dir eine Funktion, die anhand von übergebenen Parametern das Ergebnis ausrechnet und rufe diese zunächst einfach mal aus einer Shell oder durch fixe Werte im Code selber auf.

Sobald diese Funktion richtig arbeitet, kannst Du Eingaben aller Art "drum" herum bauen.

Re: Zinsen

Verfasst: Dienstag 21. Januar 2014, 21:20
von BlackJack
Musterlösung :twisted:

Code: Alles auswählen

#!/usr/bin/env python
# coding: utf8


def compound_interest(yearly_amount, interest_rate, years):
    return (
        (yearly_amount * (1 + interest_rate) * ((1 + interest_rate)**years - 1))
        / interest_rate
    )


def main():
    print compound_interest(1200, 5.95 / 100, 21)


if __name__ == '__main__':
    main()

Re: Zinsen

Verfasst: Dienstag 21. Januar 2014, 22:31
von sbNoName
so habe mich per TS³ mit jemandem unterhalten und wir sind nicht viel weiter gekommen:

Code: Alles auswählen

import easygui

easygui.msgbox ('Dieses Programm rechnet ihnen ihre Zinsen aus')

zaehler = int(0)
endbetrag = int(0)

a = int(raw_input('Wieviel werden Jährlich auf das Konto eingezahlt? '))
b = int(raw_input('Wieviele Jahre wird das Geld angelegt? '))
c = float(raw_input('Wieviel Zinsen bekommen sie? '))

while b>zaehler:
    a=a+a
    enbetrag = a*c
    zaehler = zaehler +1

geld = str (endbetrag)
    
if b==zaehler:
    easygui.msgbox('Du hast ' +geld+ '€')


problem: das ergebnis ist 0? weiß jemand was falsch ist?


@blackjack: danke aber es sollen ja verschiedene zahlen sein?

Re: Zinsen

Verfasst: Dienstag 21. Januar 2014, 23:02
von BlackJack
@sbNoName: Es wird nichts anderes helfen als sich tatsächlich selbst mal durch ein Grundlagentutorial zu arbeiten. Learn Python The Hard Way wird für absolute Anfänger oft empfohlen.

Zu meinem Code: Na dann muss man offensichtlich statt der festen Zahlen den Benutzer welche eingeben lassen. Ich hatte erst einmal das wichtigste gelöst: Die Berechnung des Endbetrags aus den gegebenen Grössen. Wobei das ja nicht ganz ernst gemeint war, denn wenn Du die Lösung übernimmst, müsstest Du dem Lehrer sicher erklären wie Du auf die Formel gekommen bist. ;-)

Edit: Ich weiss übrigens auch was falsch ist, neben der Berechnung: der Name `enbetrag`. ;-)

Re: Zinsen

Verfasst: Dienstag 21. Januar 2014, 23:04
von sbNoName
danke ich werde wohl nochmal lernen müssen!:)