2016-12-14 72 views
0

我想獲得一套公式來運行並將結果存儲到列表中。它需要使用來自單獨列表的新值來完成此操作。我可以讓它正確運行一次,但是它每次都會重新創建相同的值,並且我正在努力尋找原因。Python努力獲得方程來循環

alts=[50000,30000,10000] 
    alte=[30000,10000,0] 
    time=[] 
    mins=[0,100,30] 
    maxs= [0,0,30] 
    Va=[] 
    landing= [] 
    vMax=500 
    vMaxL= [] 

    while vMax < 601: 
     vMaxL.append(vMax) 
     maxs[0]= vMax 
     maxs[1]= vMax 

     for i in range (0, len(alts)): 
      Va.append((mins[i]+maxs[i])/2) 
      time.insert(0,(alts[i]-alte[i])/Va[i]) 
      timetaken= time[0] + time [1] + time[2] 
      landing.append(timetaken) 

     vMax= vMax + 20 

    print vMax 
    print maxs 
    print vMaxL 
    print timetaken 
    print landing 

輸出看起來是這樣的:

620 
    [600, 600, 30] 
    [500, 520, 540, 560, 580, 600] 
    479 
    [479, 479, 479, 479, 479, 479] 
+0

timetaken總是會產生的479,所以我不知道爲什麼你會看到一個不同的值,每次的值?如果我誤解了你的查詢,我表示歉意 – smoggers

回答

0

我想這個問題是,你總是做在第一時間3項的總和。

它應該不是這樣嗎?

import numpy as np 

alts=[50000,30000,10000] 
alte=[30000,10000,0] 
time=list() 
mins = np.array([0,100,30]) 
maxs = np.array([0,0,30]) 
Va = list() 
landing = list() 
vMax=500 
vMaxL= list() 

while vMax < 601: 
    vMaxL.append(vMax) 
    maxs[0]= vMax 
    maxs[1]= vMax 

    for i in range (0, len(alts)): 
     Va.append((mins[i]+maxs[i])/2) 
     time.insert(0,(alts[i]-alte[i])/Va[i]) 
     timetaken= np.sum(time) 
     landing.append(timetaken) 

    vMax= vMax + 20 

print ('vMax:', vMax) 
print ('maxs:', maxs) 
print ('vMaxL:', vMaxL) 
print ('timetaken:', timetaken) 
print ('landing',landing) 

輸出是:

vMax: 620 
maxs: [600 600 30] 
vMaxL: [500, 520, 540, 560, 580, 600] 
timetaken: 2880.0 
landing [80.0, 146.66666666666669, 480.0, 560.0, 626.66666666666663, 959.99999999999989, 1040.0, 1106.6666666666667, 1440.0, 1520.0, 1586.6666666666667, 1920.0, 2000.0, 2066.666666666667, 2400.0, 2480.0, 2546.666666666667, 2879.9999999999995]