首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法确定退出条件的正确逻辑

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

Stack Overflow用户
提问于 2014-07-15 06:10:37
回答 5查看 68关注 0票数 0

我在测量电压。电压被收集到日志文件中。电压从5伏左右开始,攀升到200伏以上,然后回落到150伏以下。我的程序应该不会把电压读数放到日志文件中,直到电压超过150。然后,当电压超过150,在250左右达到峰值,然后又下降时,程序应该在电压降到150以下时执行sys.exit。问题是我的程序执行sys.exit的时间太早了,因为当电压低于150时,电压就会先攀升。我的程序如下所示。我希望通过缩进到最后一条线路来避免这个问题,认为这不会允许这条线路在电压已经攀升到150伏以上并下降到150伏以下后才能激活。有什么建议吗?

代码语言:javascript
复制
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()
EN

回答 5

Stack Overflow用户

发布于 2014-07-15 06:15:18

我想这会起作用的。

使用open('logfile.txt','w')作为f:

代码语言:javascript
复制
while volts>150:
      print >> f, time(), volts
      volts=voltfunction()
sys.exit()
票数 0
EN

Stack Overflow用户

发布于 2014-07-15 06:23:39

相当差劲,但它的工作是:

代码语言:javascript
复制
>>> 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
票数 0
EN

Stack Overflow用户

发布于 2014-07-15 06:24:16

你只需要使用一个状态变量来跟踪你是否已经达到了150伏。如下所示:

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24746858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档