继续获取,TypeError:需要一个浮点数

时间:2014-09-17 00:04:44

标签: python typeerror

我一直在收到类型错误,但我无法弄清楚导致问题的原因。 我的代码是......

#import modules needed
from math import sin, pi, sqrt
from cmath import exp
from lab2_q4b import q

#Define constants
lamda=500e-6 #wavelength of the incident light, units in meter
n=10 #number of slits in a dffraction grating
f=1.0 #focal length, units in meter
x=0.1 #width of the screen, units in meter

#Define a new function called qnew, which will be our integrand
def qnew(u):
    return sqrt(q)*exp(1j*2*pi*x*u/(lamda*f))

我运行它会给我错误..

这是q ..的代码。

#Import modules
from math import sin, pi


#Define a function q that takes u as an argument

def q(u): #transmission function 
    d=20e-6 #separation of slits, units in meter
    alpha=pi/d #

    return (sin(alpha*u))**2 #the result of the transmission function 

2 个答案:

答案 0 :(得分:2)

问题在于qnew的具体内容:

sqrt(q)

在isoltation中运行这段代码会引发您看到的异常:

>>> sqrt(q)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: a float is required

q是一个函数,所以你试图取一个函数的平方根,这当然没有意义。我不确定你打算放在哪里,但是你需要修理的区域。

答案 1 :(得分:0)

我假设您想将其更改为:

 return sqrt(q(u))*exp(1j*2*pi*x*u/(lamda*f))