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

temperatures[120:]エラーが 14 行目に関係していることはわかっています。リストでも辞書でもないので、a を呼び出せないと思いますか? Pythonで必要なものを書くための最良の方法は本当にわかりません。特定の時間ごとに個別に温度を計算する必要があります。有限要素コードとして、私は自分のコードを各時間ステップで呼び出し python に入れ、その時間ステップの情報のみが必要です。

どんな助けでも大歓迎です.Thanks

4

1 に答える 1

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
于 2013-10-02T15:33:14.780 に答える