elif和if语句出错

2024-06-16 10:27:04 发布

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

我试图写一个加热器函数,但我有一些困难。对Python来说我还是个新手。在

我想让我的加热器运行15000秒,但在最初的120秒(包括120秒)内,我希望它沿着一条线性路径T = 0.0804 * t + 16.081,然后在120秒之后,我希望它在剩余的时间内,在线性方程中找到的最终温度下保持恒定。在

我写的代码下面有错误

import math, numpy as np
from random import *

a = 0.0804
time = range(15001)

for time in xrange(15001):
   if 0 < = time < = 120:
     Temp = a * np.array(time) + 18.3
   elif time > 121:
     Temp = Temp[120]

错误:

^{pr2}$

Tags: 函数代码import路径numpytime错误np
2条回答

看起来您在time(结果是range())和Temp(大写,循环变量,一个整数)之间搞混了。在

time = range(15001)
for Temp in xrange(15001):
   if 0 <= Temp <= 120:
     Temp = a * np.array(time) + 18.3
   elif Temp > 121:
     Temp = time[120]

因为time是一个列表,您也不应该尝试测试它是否小于或大于单个整数;0 <= time <= 120没有任何意义;不同类型之间的排序总是将数字放在第一位,然后按类型名称排序;整数总是总是低于列表,因此time > 121总是始终True。在

^{pr2}$

或者作为列表理解:

temperatures = [a * min(sec, 120) + 18.3 for sec in xrange(150001)]

在循环中,T是来自xrange(150001)的整数。在if语句的then子句中,您将T设置为数组,但这与elif子句中发生的情况无关。在

一般来说,不应该在循环中重置循环变量(这可能不是您要做的)。在

在您编辑的版本中,Temp = Temp[120]这一点也不好:Temp在这里仍然不是一个数组,所以您不能为它下标。在

相关问题 更多 >