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 行有关。我想我不能调用 atemperatures[120:]因为它不是列表或字典?我不确定在 python 中编写所需内容的最佳方法是什么。我需要单独计算每个给定时间的温度。作为有限元代码,我在每个时间步将代码放入调用 python 中,并且只需要该时间步的信息。

任何帮助将不胜感激。谢谢

4

1 回答 1

0

你在这里有几个问题。

首先,您的迭代器将只运行 120 个周期,然后它将结束,这不是您上面描述的。接下来,您没有引用生成器的输出。如果你想要输出,你应该参考最后一个。

下面是一个非常简化的生成器,它执行类似于您正在做的事情。它运行 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 回答