The problem with your loop is that in "while n>p" you reassign neither N nor P, so you never break out of the loop.
Or, if you can use imports
Code:
#Calculate sen(x)
inputValue = 0.5236
precision = 0.01
loopCounter = 1
finalValue = 0
mathSymbol = 'add'
while True:
#Create numerator
numerator = (inputValue**loopCounter)
#Create denominator
denominator = 1
for i in range(1, loopCounter+1):
denominator *= i
#Perform division
fractionResult = float(numerator) / float(denominator)
loopCounter += 2
#Save the previous value to affirm precision
prevValue = finalValue
#Perform addition or subtraction
if mathSymbol == 'subtract':
finalValue -= fractionResult
mathSymbol = 'add'
elif mathSymbol == 'add':
finalValue += fractionResult
mathSymbol = 'subtract'
#Affirm precision
if loopCounter > 3:
if precision > abs(prevValue) - abs(finalValue):
print("OUTPUT: %0.12f" % finalValue)
breakOr, if you can use imports
Code:
[b]import math[/b]
#Calculate sen(x)
inputValue = 0.5236
precision = 0.01
loopCounter = 1
finalValue = 0
mathSymbol = 'add'
while True:
#Create numerator
numerator = (inputValue**loopCounter)
[b]#Create denominator
denominator = math.factorial(loopCounter) [/b]
#Perform division
fractionResult = float(numerator) / float(denominator)
loopCounter += 2
#Save the previous value to affirm precision
prevValue = finalValue
#Perform addition or subtraction
if mathSymbol == 'subtract':
finalValue -= fractionResult
mathSymbol = 'add'
elif mathSymbol == 'add':
finalValue += fractionResult
mathSymbol = 'subtract'
#Affirm precision
if loopCounter > 3:
if precision > abs(prevValue) - abs(finalValue):
print("OUTPUT: %0.12f" % finalValue)
break