2013-05-23 4 views
6

Ho fatto questo in C/C++ prima di dove ho un ciclo while che funge da attesa tenendo premuto il programma fino a quando la condizione non viene interrotta. In Python sto cercando di fare lo stesso con while(GPIO.input(24) != 0): e il suo dice che si aspetta un rientro. Esiste comunque la possibilità di appendere la sceneggiatura a questa dichiarazione fino a quando la condizione non viene interrotta?Utilizzo di un ciclo while come attesa in python

risposta

7

Aggiungere un pass, come ad esempio:

while(GPIO.input(24) != 0): 
    pass 

Si potrebbe anche prendere in considerazione un approccio diverso:

while True: 
    if GPIO.input(24) == 0: break 

Qualunque sia la pensi sia più leggibile.

13

In Python, è necessario utilizzare l'istruzione pass ogni volta che si desidera un blocco vuoto.

while (GPIO.input(24) != 0): 
    pass 
+1

Una cosa interessante che ho imparato oggi è che l'istruzione 'pass' può essere usata ovunque un non-op è sintatticamente necessario, non solo nei loop. –

+0

Esatto; ciò include qualsiasi parte di 'try' /' except'/'else' /' finally', come un altro esempio. –

3

in Python non si può lasciare il colon : appeso quindi è necessario utilizzare un pass per completare il blocco vuoto. Un altro modo di utilizzare un while in questo modo

while True: 
    if GPIO.input(24) == 0: 
     break 
12

si noti che un vuoto ciclo while tenderà a risorse maiale, quindi se non ti dispiace riducendo la risoluzione di tempo, è possibile includere un sleep dichiarazione:

while (GPIO.input(24) != 0): 
    time.sleep(0.1) 

Che utilizza meno cicli della CPU, mentre controlla ancora la condizione con una frequenza ragionevole.