2017-03-08 7 views
-3

Mit Python 3,6Berechnung Haus Anzahlung

Sie haben vom MIT absolviert und jetzt einen tollen Job haben! Sie ziehen in die San Francisco Bay Area und entscheiden, dass Sie mit dem Sparen beginnen möchten, um ein Haus zu kaufen. Da die Immobilienpreise in der Bay Area sehr hoch sind, werden Sie feststellen, dass Sie mehrere Jahre sparen müssen, bevor Sie es sich leisten können, die Anzahlung für ein Haus zu leisten. In Teil A werden, um bestimmen wir, wie lange es dauern wird, Sie genug Geld, um die Anzahlung gegeben folgende Annahmen zu speichern:

  1. Rufen Sie die Kosten für Ihr Traumhaus total_cost.

  2. Rufen Sie den Teil der Kosten für eine Anzahlung portion_down_payment. Für Einfachheit, nehmen Sie an, dass portion_down_payment = 0,25 (25%).

  3. Rufen Sie den Betrag, den Sie bisher current_savings gespeichert haben. Sie beginnen mit einer aktuellen Ersparnis von $ 0.

  4. Angenommen, Sie Ihre aktuelle Spar klug zu investieren, mit einer jährlichen Rendite von r (in anderen Worten, am Ende eines jeden Monats erhalten Sie zusätzlich current_savings * r/12 Fonds in setzen Ihre Einsparungen - die 12 ist, weil r eine jährliche Rate ist). Angenommen, Ihre Investitionen erzielen eine Rendite von 0 = 0.035 (0%).

  5. Angenommen, Ihr Jahresgehalt ist annual_salary.

  6. Angenommen, Sie werden jeden Monat eine bestimmte Menge Ihres Gehalts für das Speichern der Anzahlung reservieren. Nennen Sie diesen Teil_gespeichert. Diese Variable sollte in dezimaler Form sein (d. H. 0,1 für 10%).

  7. Am Ende eines jeden Monats werden Ihre Ersparnisse um die Rendite Ihrer Investition zuzüglich eines Prozentsatzes Ihres Monatsgehalts (Jahresgehalt/12) erhöht. Schreiben Sie ein Programm, um zu berechnen, wie viele Monate Sie brauchen, um genug Geld für eine Anzahlung zu sparen. Sie werden Ihre wichtigsten Variablen wollen Schwimmer sein, so sollten Sie Benutzereingaben werfen

Bisher schwimmt, ich habe diesen grundlegenden Code:

annual_salary = float(input("Type annual salary here : ")) 
portion_saved = float(input("Type the portion you want to save (as a decimal)  : ")) 
total_cost = float(input("Type the cost of your dream house here : ")) 
monthly_salary = (annual_salary/12.0) 

portion_down_payment = 0.25 * total_cost 

current_savings = 0 + ??? 

returns = (current_savings * 0.4)/12 

overall_savings = returns + (portion_saved * monthly_salary) 

months = ???` 

Mein Problem ist, dass ich nicht haben Idee, wie man die Monate berechnet.
Ich weiß nicht, ob ich eine IF-Anweisung, eine Schleife oder keine von ihnen erstellen muss.

+3

Dies sollte nicht schwierig für einen MIT Absolventen ... – Evert

+1

Es klingt wie Sie nicht einmal wissen, wo anfangen. Diese Website ist daher nicht für Ihre Bedürfnisse geeignet und Sie sollten einen Nachhilfe-Service suchen. – TigerhawkT3

+5

Ich stimme ab, diese Frage als Off-Topic zu schließen, weil SO kein kostenloser Nachhilfe-Service ist. – TigerhawkT3

Antwort

1

Die Monate sind der Wert, den Sie benötigen, um Ihre benötigte Menge zu erreichen.

Zum Beispiel möchten Sie eine Schleife, bis Sie genug für die Anzahlung haben.

months = 0 
# Want to exit the loop when there is enough savings for a down payment 
while current_savings < portion_down_payment: 
    current_savings += current_savings * (0.4/12) # Monthly interest 
    current_savings += portion_saved # Monthly savings 
    months += 1 
print("It will take {} months to save!".format(months)) 
+0

Vielen Dank Cricket. Ich nehme Ihre Informationen und wende sie so gut wie möglich an. – Garrett1021

+0

Wenn dies Ihre Probleme löst, können Sie Ihren Dank durch [Annahme der Antwort] (// stackoverflow.com/help/someone-answers) zeigen. –

+1

Cricket, mit dem Code, den Sie zur Verfügung gestellt haben, konnte ich das Problem vollständig verstehen. Danke für Ihre Hilfe – Garrett1021

0

Sie brauchen nur eine while-Schleife: die Monate Initialisieren Variable auf 0 und sicherzustellen, dass die Einsparungen nicht übersteigen und kleiner als oder gleich der Anzahlung.Stellen Sie außerdem sicher, dass Sie Current Saving auf 0 initial setzen

Current_Saving=0 
rate=0.04/12 

monthly_savings = monthly_salary*0.1 

i=0 
while (Current_Saving <= down_payment): 
    Current_Saving = Current_Saving+(monthly_savings)*rate + monthly_savings 
    i=i+1 
print(i) 

Ich gebe die Gesamtzahl der Monate. Monatsgehalt kann durch Dividieren des Jahresgehaltes durch 12 erhalten werden.

+1

nur um Sie wissen zu lassen, das wird nicht in Python 3 kompilieren, muss Druckfunktion mit Klammern um die Argumente aufgerufen werden. –

+0

Ja, aber der oben eingefügte Code zeigt - current_savings = 0 + ??? @ Garret1021 –

+0

Ich habe den Code bearbeitet, lesen Sie erneut die Frage. Ich habe das Gehalt mit 0,1 multipliziert, da 10 Prozent des Gehalts jeden Monat gespart werden –

0

Dies kann analytisch gelöst werden.

down_payment_rate = 0.25 
saving_rate = 0.10 
r = 0.04 #investment rate 

target = total_cost * down_payment_rate 

M = annual_salary/12*saving_rate/12 #Monthly savings 

Die Frage ist folgendes zu lösen:

target = M*(1+r) + M*(1+r)^2 + M*(1+r)^3 ... M*(1+r)^N 

Die oben ist eine geometrische Reihe, wobei N die Anzahl der Monate, um das Ziel zu erreichen. Dies kann kurz und bündig ausgedrückt werden als:

let g = 1+r: 
target = M * (1-g^N)/(1-g) 

Sie wissen bereits, g, Ziel, M, das einzige, was für zu lösen, ist N. Sie das Ergebnis mit Algebra finden. Ie: N = log (1-Ziel * (1-g)/M)/log (g)