回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>每次某个值保持不变时,我都试图更新一个计数器变量</p>
<p>主要条件是:</p>
<pre><code>streak = 0
entryno_counter = 1
class OtherDataGet:
streak_type = 3
uod_state = 3
@staticmethod
def uod():
global streak
if entryno_counter == 1:
pass
else:
if values[1] > values_cache[1]: # If value went up
if OtherDataGet.uod_state == 1 or 2: # If it was previously down or same
OtherDataGet.uod_state = 0 # Set state to up
streak = 0 # Reset streak
OtherDataGet.streak_type = 0 # Set streak type to up
elif OtherDataGet.uod_state == 0: # If last state was up
streak += 1 # Add one to streak counter
return 0
elif values[1] < values_cache[1]:
if OtherDataGet.uod_state == 0 or 2:
OtherDataGet.uod_state = 1
streak = 0
OtherDataGet.streak_type = 1
elif OtherDataGet.uod_state == 1:
streak += 1
return 1
elif values[1] == values_cache[1]:
if OtherDataGet.uod_state == 0 or 1:
OtherDataGet.uod_state = 2
streak = 0
OtherDataGet.streak_type = 2
elif OtherDataGet.uod_state == 2:
streak += 1
return 2
</code></pre>
<p>正在更新的变量位于全局命名空间中,并且可以在任何地方访问,因此更新它应该没有问题</p>
<p>例如,第一次返回2时,条纹计数器设置为0,第二次返回2时,条纹计数器应设置为1,第三次返回2时,条纹计数器应设置为3,依此类推</p>
<p>1125519,0182701,4404,<strong>0,1</strong><br/>
2125519,2182702,4404,<strong>2,1</strong><br/>
3125518,1182703,4404,<strong>1,1</strong><br/>
4125519,0182704,4404,<strong>0,1</strong><br/>
5125519,2182705,4404,<strong>2,1</strong><br/>
6125519,2182706,4404,<strong>2,1</strong><br/>
7125519,2182706,4404,<strong>2,1</strong><br/>
8125519,2182707,4404,<strong>2,1</strong><br/>
9125517,1182708,4404,<strong>1,1</strong><br/>
10125518,0182709,4404,<strong>0,1</strong><br/>
11125517,1182710,4404,<strong>1,1</strong></p>
<p>这是输出数据,您只需要查看最后两列。倒数第二个是来自<code>OtherDataGet.uod</code>的返回值,最后一个应该是<code>streak</code>。如果你看第5-8行,有一个2s的条纹,该行的最后一个值应该分别是1,2,3,4,但即使应该重置为0,它仍然保持为1</p>