为什么我得到的";ufunc';乘';不包含签名匹配类型为dtype(';s32';)的循环,其值来自raw_input(';s32';)
问题描述
我正在尝试创建一个非常简单的程序,它将绘制抛物线,其中v
是速度,a
是加速度,x
是时间。用户将输入v
和a
的值,然后v
和a
和x
将确定y
。
我尝试这样做:
x = np.linspace(0., 9., 10)
a = raw_input('Acceleration =')
v = raw_input('Velocity = ')
y = v * x - 0.5 * a * x**2.
但是,我一直收到此错误:
TypeError:ufunc‘Multiply’不包含签名匹配类型为dtype(‘s32’)的循环
这是什么意思?
解决方案
来自documentation of raw_input
:
然后该函数从输入读取一行,将其转换为字符串(去掉尾随的换行符),并返回该字符串。
因此发生的情况是,您尝试将字符串与浮点数相乘,类似于y="3" * x - 0.5 * "3" *x**2
,这是未定义的。
避免此问题的最简单方法是先将输入字符串强制转换为浮点型。
x = np.linspace(0., 9., 10)
a = float(raw_input('Acceleration ='))
v = float(raw_input('Velocity = '))
y = v * x - 0.5 * a * x**2
请注意,如果您使用的是Python 3,则需要使用input
而不是raw_input
,
a = float(input('Acceleration ='))
相关文章