yield“function”对象不是subscriptab时出错

2024-06-16 11:40:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图写一个加热器函数,但我有一些困难。我对Python相当陌生。在

我想让我的加热器运行15000秒,但前120秒(包括120秒)。我希望它沿着一条线性路径,温度=0.0804*time+16.081,然后在120秒之后,我希望它在剩余的时间里,在线性方程中得到的最终温度下保持恒定。我需要分别计算每个给定时间的温度。作为有限元代码,我将我的代码放入调用python的每一个时间步,只需要该时间步的信息。在

我写的代码下面有个错误,说“function”对象不可订阅

    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的每一个时间步,只需要该时间步的信息。在

任何帮助都会很大谢谢。谢谢在


Tags: 代码inimport信息for错误时间温度
1条回答
网友
1楼 · 发布于 2024-06-16 11:40:28

你有几个问题。在

首先,迭代器将只运行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

相关问题 更多 >