Python TypeError:range()整数结束参数预期,得到浮点数

时间:2017-01-20 13:54:30

标签: python python-2.7

朋友们,我是python的新手并试图相互绘制三条曲线,但我遇到了一些我无法弄清楚的问题:

我尝试用不同的矢量来解决球的轨迹:

1-个不同的x值 2-种不同的速度值 3个不同的角度值

     import numpy as np
import math as m
import matplotlib.pylab as pl


def ball(x, theta, v0, y0):
    v0= v0/3.6
    g = 9.81
    theta = m.radians(theta)
    return x * m.tan(theta) + y0\
              - 1./(2.0 * v0 ** 2.0 ) * g * x**2.0 / (m.cos(theta)**2)

x = np.linspace(0, 10, 100)

#part1
theta = 60
y0 = 1.0    
v0= 15.0
y = ball(x, theta, v0, y0)
pl.plot(x, y)


#part2
theta = 60
y0 = 1.0
for v0 in range(10.0, 60.0, 10.0):
  y2 = ball(x, theta, v0, y0)
  pl.plot(x, y)

#part3
y0 = 1.0
for theta in range(0.0, 112.5, 22.5):
   y3 = ball(x, theta, v0, y0)
   pl.plot(x, y)

pl.plot(x, y, "r*")
pl.plot(x, y2, "bo")
pl.plot(x, y3, "y^")
pl.xlabel("X")
pl.ylabel("Y")
pl.legend(["x,y","x,y","x,y"])
pl.show()

请帮助我发生什么事情?

3 个答案:

答案 0 :(得分:1)

range函数不接受浮点数作为参数,因此必须使用整数。那么,你可以做的只是将range函数的每个部分增加10倍,然后在循环内将其减少10倍。例如:

for i in range(int(0.0*10), int(112.5*10), int(22.5*10)):
    realI = i/10.0
    #now realI is the float you had wanted originally. 

答案 1 :(得分:0)

范围(起始值,结束值,步骤)

您不能使用浮动类型数字,使用整数。

答案 2 :(得分:0)

来自{2.7}上的Python 2.7文档:

  

这是一个用于创建包含算术的列表的通用函数   级数。它最常用于for循环。 参数必须   是纯整数。 如果省略step参数,则默认为   1.如果省略start参数,则默认为0.完整表单返回普通整数列表[start,start + step,start + 2 *   步, ...]。如果step为正,则最后一个元素是最大的开始   + i *步骤少于停止;如果step为负数,则最后一个元素是最小的start + i * step大于stop。步骤不能为零   (或者引发ValueError)。