簡體   English   中英

產量錯誤-“功能”對象不可下標

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM