2

Raspberry Pi で Python と GPIO の両方について学びながら、「ゲーム」を作ろうとしています。これは私が持っているATMです:

while playing == 1:
        if (GPIO.input(9) == 0):
            GPIO.output(18, GPIO.LOW)
            print("Well done!!")
            time.sleep(1)
        else:    
            print("Wrong!")
            lives = lives - 1
            time.sleep(1)
        playing = 0

ここで、私の問題は、プログラムが if ステートメントにヒットし、else に直行することです (ご想像のとおり)。ただし、プログラムが if ステートメントの最初の部分を 1 秒間待機してから、に移動する必要があります。他の。

前もって感謝します!

4

1 に答える 1

1

おそらく、次のように書き直すことができます。

while playing == 1:
   for _ in range(10):
       if GPIO.input(9) == 0:
           GPIO.output(18, GPIO.LOW)
           print("Well done!!")
           break
       time.sleep(0.1)
   else:    
       print("Wrong!")
       lives = lives - 1

これにより、GPIO ピンが 100 ミリ秒間隔で 10 回ポーリングされます。elseGPIO ピンが 10 回の試行で High のままである場合にヒットします。

for(Python の-elseコンストラクトに出くわしていない場合は、 Why does python use 'else' after for and while loops? を参照してください。)

GPIOまたは、エッジ検出やコールバックなど、モジュールのより高度な機能を使用することもできます。ドキュメントを参照してください。

于 2015-02-22T17:40:29.190 に答える