2016-07-19 113 views
1

我想要做的是修改下面的dT语句。现在,如果dT介于-.5和.5之间,我会打印出“温度”,“dT”,“稳定状态”,但是只有当dT值介于-.5和.5之间时,才会打印出这三个项目。 5十次迭代。如果不是,它应该只是打印出“温度”“dT”,如else语句所示。如果满足两个条件,则打印出

temperature = [] 
dT_tol = .5 

# Read loop 
for i in range(60): 
    # Get the thermocouple reading on AIN0. 
    tempC = ljm.eReadName(handle, "AIN0_EF_READ_A") 
    temperature.append(tempC) 
    dT = temperature[i]-temperature[i-1] 

    if -dT_tol<dT<dT_tol: 
     print "Temperature:","%.3f"% temperature[i],"   " "dT:", "%.3f"% dT, "   " "Steady State" 
     sleep(1) 
    else: 
     print "Temperature:","%.3f"% temperature[i],"   " "dT:", "%.3f"% dT 
     sleep(1) 
+0

所以只要3个数据点中的一行是在范围之内,然后打印数据为它们中的每?所以.5,.49,.5,.59,.6,.4,.5,.59会打印.5,.49,.5,.59,.4,.5,.59? –

+0

我认为你有一个具有挑战性的难题。看看我的答案是否能解决你的问题 –

回答

0

您可以使用一个计数变量,只要条件已经达到10次连续或连胜被打破

+0

你能证明一个例子吗?我不熟悉这种方法 –

+0

@AndrewPoissant我并不想屈居,但就好像你对最基本的编程概念几乎没有任何理解。也许你会更好地服用一些教程(网上有很多免费和便宜的) –

+0

说某人对基本编程概念基本上没有任何理解是非常居高临下的。我习惯于matlab,并具有基本编程概念的知识。我是python新手,正在寻找帮助,而不是我的知识 –

1

只需使用if代替for计数变量设置为0。为了便于阅读,请使用0.5而不是.5。考虑使用format方法来显示字符串,特别是如果您使用的是Python 3x。

+0

但我怎样才能使它的条件是,在开始打印“稳定状态”之前,dT在两个值之间进行十次直接迭代?看起来,每当dT值介于-0.5和0.5之间时,你的方式会给我一个“稳定状态”的输出 –

+0

你没有'if'语句,但是你问怎么修改'if'。仔细阅读你的代码。当你使用'for'时不起作用。 – PatNowak

+0

我的错误,是的,我应该有一个if/else循环,而不是for/else循环。但是,我仍然没有完成我所要做的事情。我希望在显示“稳定状态”的附加打印输出之前,dT值必须通过10次直接迭代测试的条件。 –

1

我觉得这是你可能会想:

我编辑我的新代码的答案。如果这是错误的,我会删除这个答案并添加一个新答案。我的思想很接近,但有点混乱。

该代码首先查找数据超出范围的所有地方并记录其索引(停止)。然后它从'停止'检查'停止'以查看范围是否大于2并在最终结果中收集这些值。

temp_list = [] 

# first make up some data. These are all positive, between 0 and .7. In your case you would use your temperature data 
temp_list = [.6, .5, .4, .3, .5, .6, .4, .3, .2, .8, .4] 
print "temp_list" 
print temp_list 

# we want to print data where at least 3 in a row are within -.5 and .5 

print "---------" 


results = [] 
stops = [(i, d) for i, d in enumerate(temp_list) if abs(d)>.5] 
stops.append([len(temp_list), 10]) 
last_stop = 0 
print stops 

for pos in stops: 
    if pos[0]-last_stop>2: 
     results.extend(temp_list[last_stop+1:pos[0]]) 
     last_stop = pos[0] 
     print results 

print "done" 

结果:

temp_list 
[0.6, 0.5, 0.4, 0.3, 0.5, 0.6, 0.4, 0.3, 0.2, 0.8, 0.4] 
--------- 
[(0, 0.6), (5, 0.6), (9, 0.8), [11, 10]] 
[0.5, 0.4, 0.3, 0.5] 
[0.5, 0.4, 0.3, 0.5, 0.4, 0.3, 0.2] 
done 
+0

我连续使用了3个而不是10个 –

相关问题