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...
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?
Danke im Vorraus!
Zinsen
@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: Damit ist die Funktion mit dem Namen `raw_input()` gemeint. Vielleicht solltest Du mal ein Grundlagentutorial durcharbeiten.
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):
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.
Grund: Quelltext in Python-Code-Tags gesetzt.
@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.
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.
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+ '€')
Aber Python will erst garnicht den if Befehl ausführen...
Ob zaehler 1 oder zaehler 0 es ändert sich nichts...
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?
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?
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
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.sbNoName hat geschrieben: Aber Python will erst garnicht den if Befehl ausführen...
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
assert encoding_kapiert
Musterlösung
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()
so habe mich per TS³ mit jemandem unterhalten und wir sind nicht viel weiter gekommen:
problem: das ergebnis ist 0? weiß jemand was falsch ist?
@blackjack: danke aber es sollen ja verschiedene zahlen sein?
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?
@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`.
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`.