2015-07-09 5 views
0

Q.) 1 + 1/2! + 1/3! + ¼! + ... .....
Выход следующей программы всегда равен 1.0. Я начинающий питон. Скажите, пожалуйста, что случилось? Просьба предложить любые другие методы, чтобы сделать эту программу лучше. Нет встроенных функций, пожалуйста. Я хочу сделать это вручную.1 + 1/2! + 1/3! + ¼! + ... ..... Нахождение суммы

n=int(raw_input("Enter number of terms : ")) 

    d=0 #to sum all terms, initial value is 0 

while n>0: 
    j=n #we start by taking factorial of the last term 
    s=1 #to multiply to find factorial 
    while j>0: 
       s=s*j #number gets multiplied to s and stored in s 
       j=j-1 #number is decreased until it reaches 0 
    n=n-1 #we will keep finding factorial until the very first term, i.e. 1 is reached 
    x=float(1/s) #to find reciprocal of the factorial we just found in  floating point 
    d=d+x #adding to final sum 

print "Sum of 1+1/2!+1/3!+1/4!+.... is ",d #printing 
+3

'х = поплавок (1/с)' -> 'х = поплавок (1)/s' или' х = 1./s' – vaultah

+0

не встроенные функции? Тогда почему вы используете raw_input, float, print и т. Д. ...? –

+0

'print' в порядке, потому что в Python 2 это утверждение, а не встроенная функция. :П – TigerhawkT3

ответ

1

Вам необходимо использовать float где-нибудь в вашем подразделении. Я просто делаю тебя «поплавком».

n=int(raw_input("Enter number of terms : ")) 

d=0 #to sum all terms, initial value is 0 

while n>0: 
    j=n #we start by taking factorial of the last term 
    s=float(1) #to multiply to find factorial 
    while j>0: 
       s=s*j #number gets multiplied to s and stored in s 
       j=j-1 #number is decreased until it reaches 0 
    n=n-1 #we will keep finding factorial until the very first term, i.e. 1 is reached 
    x=1/s #to find reciprocal of the factorial we just found in  floating point 
    d=d+x #adding to final sum 

print "Sum of 1+1/2!+1/3!+1/4!+.... is ",d #printing 
Смежные вопросы