[英]error with yield - “function” object is not subscriptable
我正在嘗試編寫加熱器功能,但遇到了一些困難。 我對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中編寫所需內容的最佳方法。 我需要分別計算每個給定時間的溫度。 作為有限元代碼,我在每個時間步都將代碼放入python調用中,並且只需要該時間步的信息。
任何幫助將不勝感激。謝謝
您在這里有幾個問題。
首先,您的迭代器只會運行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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.