2013-10-02 21 views
0

我想寫一個加熱器功能,但我有一些困難。我對Python相當陌生。誤差與產量 - 「功能」的對象不是標化

我希望我的加熱器,以15000秒,但在第120秒(含120)運行。我希望它遵循一個直線的路徑的溫度= 0.0804 *時間+ 16.081,然後120秒我希望它在從線性方程中發現的最終溫度保持爲的剩餘時間的其餘常數之後。我需要分別計算每個給定時間的溫度。作爲有限元代碼,我將代碼放入每個時間步調用python,並只需要該時間步的信息。

我已經寫在下面,我會收到錯誤說該代碼「功能」對象未標化的

import math, numpy as np 
from random import * 

a = 0.0804 

def temperatures(): 
    for second in xrange(121): 
      last = a * second + 18.3 
     yield last 

mygenerator = temperatures() #create a generator 
print(mygenerator) 
for last in mygenerator: 
    temperatures += temperatures[120:] * (15000 - 120) 
    print temperatures 

我知道錯誤是與線14做的,我想我不能打電話一個temperatures[120:],因爲它不是一個列表或字典?我不確定什麼是最好的方式來編寫我需要的Python。我需要分別計算每個給定時間的溫度。由於有限元程序,我把我的代碼到調用蟒蛇在每個時間步,只希望該時間步長的信息。

任何幫助將不勝感激。謝謝

+0

「溫度[120:]」代表什麼?我真的不知道應該是什麼樣的預期產出。你使用'溫度'作爲函數*和*作爲列表/數字(支持'+ ='的東西)。 – Bakuriu

回答

0

你有幾個問題在這裏。

首先,迭代器將只對120個週期運行,那麼它就會結束,這是不是你在上面所描述的內容。接下來,您沒有引用生成器的輸出。如果你想要輸出,你應該參考last。

下面是一個非常簡化的發生器,執行類似於您正在尋找在做什麼東西。它運行10個週期,但在第一個5後表現不同。

>>> def Temp(): 
...  for i in xrange(10): 
...    if i<5: 
...      yield i; 
...    else: 
...      yield 5 
... 
>>> for last in Temp(): 
...  print last