Zinsen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
sbNoName
User
Beiträge: 7
Registriert: Dienstag 21. Januar 2014, 19:20

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!
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
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.
sbNoName
User
Beiträge: 7
Registriert: Dienstag 21. Januar 2014, 19:20

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
BlackJack

@sbNoName: Damit ist die Funktion mit dem Namen `raw_input()` gemeint. Vielleicht solltest Du mal ein Grundlagentutorial durcharbeiten. :-)
sbNoName
User
Beiträge: 7
Registriert: Dienstag 21. Januar 2014, 19:20

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)
Zuletzt geändert von Anonymous am Dienstag 21. Januar 2014, 20:21, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
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.
sbNoName
User
Beiträge: 7
Registriert: Dienstag 21. Januar 2014, 19:20

Es waren auch 5,95% in meiner Schulaufgabe, sorry!

Dann google ich mal weiter :)
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
sbNoName
User
Beiträge: 7
Registriert: Dienstag 21. Januar 2014, 19:20

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...
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
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()
sbNoName
User
Beiträge: 7
Registriert: Dienstag 21. Januar 2014, 19:20

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?
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`. ;-)
sbNoName
User
Beiträge: 7
Registriert: Dienstag 21. Januar 2014, 19:20

danke ich werde wohl nochmal lernen müssen!:)
Antworten