2017-09-19 8 views
-2

Ich bekomme aus irgendeinem Grund einen NameError auf "Math".input() error - NameError: Name '...' ist nicht definiert

years = 10 
D = 100 


p = 0.075/12 
T = years * 12 
S = D * ((math.pow(1 + p, T) - 1)/p) 

print("In", years, "years, $", end = "") 
print(D, "deposited per month will grow to $", end = "") 

SFormatted = "%.2f" % S 
print(SFormatted, ".", sep = "") 
+2

Sie scheinen nicht in diesem Code eingegeben werden. –

+0

Es tut mir leid, aber wie würde das aussehen? Wie ich schon sagte, ich bin ein kompletter Anfänger ... hatte einen Freund, der mir bei den meisten hilft>< – diags187

+0

In diesem Fall schlage ich vor, diesen Freund um Hilfe mit dem Code zu bitten, den er dir gegeben hat. Stack Overflow ist kein Codierungs- oder Debugging-Service. Bitte lesen Sie [Wie stelle ich eine gute Frage?] (Https://stackoverflow.com/help/how-to-ask). – FluffyKitten

Antwort

2

Sie müssen 'import math' zuerst in Ihrem Skript tun.

Beispiel

>>> math.pow(1, 2) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'math' is not defined 

>>> import math 
>>> math.pow(2, 2) 
4.0 
+0

@ diags187 Bitte vergessen Sie nicht, [akzeptieren] (https://stackoverflow.com/help/someone-answers) die hilfreichste Antwort auf Ihre Frage. Es wird davon abgeraten, in den Kommentaren "Danke" zu sagen, um StackOverflow zu verbessern. – MSeifert

0

Der Grund für das Scheitern ist, weil es keine math Variable in Ihrem Code definiert ist, so dass Sie math.pow nicht verwenden.

Sie müssen jedoch nicht import math (aber das würde auch funktionieren), weil es eine pow Funktion in den Builtins gibt.

So einfach ändern:

S = D * ((math.pow(1 + p, T) - 1)/p) 

zu:

S = D * ((pow(1 + p, T) - 1)/p) 

oder den Netzbetreiber ** verwenden:

S = D * (((1 + p) ** T) - 1)/p) 
Verwandte Themen