穿越Python

时间:2016-03-16 20:58:57

标签: python

我正在尝试运行一个Python脚本,该脚本从地面计算物体的轨迹,高于100,000米,然后回到100,000米以下。我希望能够计算出超过100,000米的时间。我的轨迹代码很好(Runge-Kutta),我可以达到10万米。但是,我无法找到合适的Python算法来保持最高海拔高度并开始降至100,000米以下。

这就是我所拥有的:

while (states[4,(i - 1)] >= 100000 and states[4,i] <= 100000 or states[4,i] != 100000):

但是,我结束了无限循环。 states[4,i]是海拔高度。我的想法是,如果之前的(i - 1)高度超过100,000米且当前(i)高度低于100,000米,我希望它退出while循环。 states[4,i] != 100000旨在让我达到那个高度,至少。

思想?

2 个答案:

答案 0 :(得分:1)

我相信你在这里遇到的问题是你需要跟踪你何时越过海拔高度。为什么不在循环之前将变量设置为false,然后在达到&gt; = 100000时将其设置为true,并将其添加到您的while。此外,这些条件是用于离开你的循环,所以你应该否定它。 E.g。

reachedHeight = False
while (not (reachedHeight and states[4,(i - 1)] >= 100000 and states[4,i] <= 100000)):
  if (not reachedHeight and states[4,i] >= 100000):
    reachedHeight = True
  ...

也可以是循环中断的条件。

答案 1 :(得分:1)

上面的while循环将继续循环,除非states[4,i]等于完全 100,000。

False and False or True == True

这可能是您遇到无限循环的原因。您可能希望删除第三种情况,并在必要时在循环内执行其他检查。

相关问题