2017-01-10 51 views
0

我想通過增加一個變量(t)來運行一個小方程式,但每隔500秒只打印一次結果。我正在使用一個計數器函數和其餘部分來指示何時我有一個整數的值,然後打印。在此代碼中,它不打印任何內容。如果我將計數器設置爲「counter = counter + 5」,它將運行並遞增x 5,但每次都打印一次。你能看到什麼是錯的嗎?你可以看到我評論了一些我正在嘗試的東西。我認爲解決方案是這樣的,但我無法弄清楚!添加一個計數器語句,每1分鐘打印一次數值

t = 0 
counter = 0 
#mass rocket = 4390 
#mass fuel at launch = 
mass= 13000 
v = 0 
a = 0 
d = 0 
deltat=.001 

#gd = gdisplay(x=0, y=0, width=100, height=4000, title='v vs. t', xtitle='t', ytitle='v',foreground=color.black, background=color.white, xmax=70, xmin=0, ymax=4000, ymin=0) 
while (t<=65): 
    t = t + deltat 
    mass = 13000 - (130*t) 
    v = v + ((1880*(130*deltat))/(mass)) 
    a = ((1880/(mass))*((130*deltat)/(deltat))) 
    d = d + ((v*deltat)+((.5)*a*(deltat*deltat))) 
    #counter += .001 
    counter = counter + t 
    #counter%5==0 
    if counter %5 == 0: 
     print (counter) 
     print (t) 
     print (v) 
     #print a 
     print (d) 

我試過這個,它不運行。沒有錯誤,它只是沒有做任何事情。

t = 0 
counter = 0 
#mass rocket = 4390 
#mass fuel at launch = 
mass= 13000 
v = 0 
a = 0 
d = 0 
deltat=.001 

#gd = gdisplay(x=0, y=0, width=100, height=4000, title='v vs. t', xtitle='t', ytitle='v',foreground=color.black, background=color.white, xmax=70, xmin=0, ymax=4000, ymin=0) 
while (t<=65): 
    t = t + deltat 
    mass = 13000 - (130*t) 
    v = v + ((1880*(130*deltat))/(mass)) 
    a = ((1880/(mass))*((130*deltat)/(deltat))) 
    d = d + ((v*deltat)+((.5)*a*(deltat*deltat))) 
    #counter = counter + 5.0 
    if t % 1.0 == 0: 
     #print (counter) 
     print (t) 
     print (v) 
     print (d) 

Jeepers-對不起,我太傻了。我厭倦了這樣的,它只是運行一次:

t = 0 
counter = 0 
#mass rocket = 4390 
#mass fuel at launch = 
#mass= 13000 
v = 0 
a = 0 
d = 0 
deltat=.001 

#gd = gdisplay(x=0, y=0, width=100, height=4000, title='v vs. t', xtitle='t', ytitle='v',foreground=color.black, background=color.white, xmax=70, xmin=0, ymax=4000, ymin=0) 
while (t<=65): 
    t = t + deltat 
    mass = 13000 - (130*t) 
    v = v + ((1880*(130*deltat))/(mass)) 
    a = ((1880/(mass))*((130*deltat)/(deltat))) 
    d = d + ((v*deltat)+((.5)*a*(deltat*deltat))) 
    #counter += 1 
    if counter % 500 == 0: 
     print (counter) 
     print(t) 
     print(v) 
     print(d) 
     counter += 1 

如果我增加if語句高於櫃檯,它是由,5S遞增噸和不.001,並增加計數x 500.我很困惑。

t = 0 
counter = 0 
#mass rocket = 4390 
#mass fuel at launch = 
#mass= 13000 
v = 0 
a = 0 
d = 0 
deltat=.001 

#gd = gdisplay(x=0, y=0, width=100, height=4000, title='v vs. t', xtitle='t', ytitle='v',foreground=color.black, background=color.white, xmax=70, xmin=0, ymax=4000, ymin=0) 
while (t<=65): 
    t = t + deltat 
    mass = 13000 - (130*t) 
    v = v + ((1880*(130*deltat))/(mass)) 
    a = ((1880/(mass))*((130*deltat)/(deltat))) 
    d = d + ((v*deltat)+((.5)*a*(deltat*deltat))) 
    counter += 1 
    if counter % 500 == 0: 
     print (counter) 
     print(t) 
     print(v) 
     print(d) 
+0

順便說一句,如果你正在使用Python 3,'print'是一個功能,所以不該有」 t是「print」和括號之間的空格。另一件事:你將'mass'定義爲13000,但在你的循環開始時將硬編碼爲1300。 – Jakub

+0

這不是你想要的嗎?你的循環將每500次迭代進入你的if語句。每500次迭代,你的t變量增加了500 * 0.001 = 0.500。 –

+0

是的,你是對的,我認爲它是有效的。非常感謝!! – ericbikes

回答

0

增量計數器作爲這樣的:

counter += 1 

,並打印這樣

if counter % 500 == 0: 
    print (counter) 
+0

我剛剛更新了我的問題 - 但讓我試試你的建議,謝謝! – ericbikes

+0

在你的情況下,我需要定義「時間」還是導入它?我是新手,只是試圖學習這一點。我只想要一個簡單的函數,用英文說:「如果」t「是一個整數值的倍數x,然後打印結果。」這裏是示例輸出,但它應該每隔500秒打印一次。 – ericbikes

+0

5.0 0.001 0.01880018800188002 2.820028200282003e-05 10.0 0.002 0.03760056400940017 7.520103401598027e-05 – ericbikes