2016-03-27 15 views
1

i (piton 2.7 w /) bir program yapıyorum günahı yaklaşmak için (x) Taylor serisi ile, burada kod: içinValueError: yüzer dizeyi dönüştürmek olamazdı: pi

from math import pi 
from math import sin 
from math import factorial 
x=float(raw_input("Degree(in radian, example: 5*pi/4): ")) 
n=input("n: ") 
Sum=0 
for i in range(1,n+1): 
    Sum=Sum+(pow(-1,(i+1))*pow(x,(2*i-1))/factorial(2*i-1)) 
error=math.fabs(sin(x)-Sum) 
print "Using Taylor series for sin(%s) with n = %d returns %f,with error= %f"(x,n,Sum,error) 

(üzgün x = 5 * pi/4 ile çalışacak orada from math import karmaşa, bu tam olarak iyi değil) ancak

, program yanlış burada ne aradığımı

ValueError: invalid literal for float(): 5*pi/4

döndürür? Python'un bir dize olarak x'i okuduğunu ve bunun yüzdüğünü düşünmediğimi düşünüyorum, ancak

'u bildiğim herhangi bir yardım için teşekkür ederiz! Haklısınız, piton bir dize olarak x okuyacak olan

+1

Python'un 'şamandıra()' işlevi anlamıyor ' '5 * pi/4'' o anlar daha başka'' Yüksüz bir kırlangıcın artı two'' ait hava hızı. Bir '' 4 '' veya '' 2.5883 '' gibi bir kayan noktalı sayı veya onun dize gösterimini iletmeniz gerekir. – TigerhawkT3

+0

Python 2'yi öğrenmeye zahmet etmeyin, doğrudan Python 3'e geçin. Raw_input() 'eşdeğeri' input() 'orada ve' print' işlevidir. Gerisi çoğunlukla aynı olmalıdır. Bu, istenen minimum örneğe daha yakın olmak için giriş değerini kodlayabilirsiniz. –

cevap

1

:

y = raw_input("Degree(in radian, example: 5*pi/4): ") 
print y => 5*pi/4 

Sen radyan değeri precompute ve programa geçmek zorunda kalacak:

(5 * math.pi)/2 = 7.853981633974483 

Bu olurdu Programınıza girdi olarak verdiğiniz değer.

1

Ne istediğinizi elde etmek için bir çözüm olabilir. Bu çözümü kullanmadan önce Python 2 input() işlevinin belgelerini okuyun. Dokümantasyon ayrıca Python 3'te kaldırılmasının nedenini de açıklıyor!

from math import pi 
x = input() 
print x 

bu kodu ve giriş 3 * pi çalıştırırsanız, 9.42477796076938 yazdırır:

İşte kod.

1

Değerleri komut satırından * pi/b biçiminde almak isterseniz, aşağıdakileri kullanabilirsiniz.

x=(raw_input("Degree(in radian, example: 5*pi/4): ")) 
numerator = float (x.split('*')[0]) 
denominator =float (x.split('/')[1]) 
x = numerator* pi /denominator