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
6
A
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
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.
Una cosa interessante che ho imparato oggi è che l'istruzione 'pass' può essere usata ovunque un non-op è sintatticamente necessario, non solo nei loop. –
Esatto; ciò include qualsiasi parte di 'try' /' except'/'else' /' finally', come un altro esempio. –