1

変数Accessory2の立ち上がりエッジをチェックするwhileループがあります。私のコードは次のとおりです。

            # Check for rising edge of ACC2
    while (currentTime.Value - StartTime) < TimeOutValue:
        if Accessory2.Value == 1:
            Acc2StartTime = currentTime.Value
            print rttPrefix + "ACC2 output to ON"
            break
        yield None
    else:
        print rttPrefix + "No ACC2 output"
        DynamicFlag.Value = -2

ただし、変数Accessory2が上がると、break条件はifステートメントを停止しますが、elseステートメントも実行されます。理由は何ですか?

出力は次のとおりです。

*RTT:* ACC2 output to ON
*RTT:* No ACC2 output
4

2 に答える 2

2

おそらく、while ループを複数回実行 (または継続) していて、最初の実行で最初の行が出力され、その後の実行で 2 番目の行が出力されます。

于 2013-01-11T15:52:37.827 に答える
-2

elseステートメントはwhileループと同じレベルでインデントされているため、その中にはありません。

于 2013-01-11T15:19:01.397 に答える