无法确定退出条件的正确逻辑

2024-05-15 17:02:20 发布

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

我在测量电压。电压被收集到一个日志文件中。电压从5伏左右开始,上升到200伏以上,然后下降到150伏以下。我的程序应该不会把电压读数放入日志文件,直到电压高于150。当电压超过150伏,峰值在250伏左右,然后又开始下降时,这个程序应该会做一个测试系统出口当电压降到150以下时。问题是我的程序系统出口太早了,当电压第一次上升,当电压低于150。我的程序如下所示。我希望通过在最后一行的旁边缩进来避免这个问题,我认为这将不允许这条线激活,直到电压已经上升到150伏以上并下降到150伏以下。有什么建议吗?你知道吗

with open('logfile.txt', 'w') as f:

    while True:
        volts = adc.readADCDifferential01(1056, 8)
        if volts > 150:
            print >> f, time(), volts
            if volts < 150:
                sys.exit()

Tags: 文件程序txtif系统aswithopen
3条回答

我想这会管用的。你知道吗

打开('日志文件.txt','w')作为f:

while volts>150:
      print >> f, time(), volts
      volts=voltfunction()
sys.exit()

你只需要使用一个状态变量来跟踪你是否达到了150伏。像这样:

with open('logfile.txt', 'w') as f:
    reachedPeak = False
    while True:
        volts = adc.readADCDifferential01(1056, 8)
        if volts > 150:
            reachedPeak = True
            print >> f, time(), volts
        if volts < 150 and reachedPeak:
            sys.exit()

相当蹩脚,但工作:

>>> voltages = [50, 100, 150, 200, 250, 200, 150, 100, 50]
>>> threshold_passed = False
>>> for v in voltages:
...     if v > 150:
...         print v
...         threshold_passed = True
...     if threshold_passed and v < 150:
...         print v
...         break
... 
170
200
250
200
170
100

相关问题 更多 >