2014-04-25 110 views
-3

下面是代碼IndentationError:預計縮進塊10

import RPi.GPIO as GPIO 
import time 


GPIO.setmode(GPIO.BCM) 
GPIO.setup(2, GPIO.IN) 


while True: 
    if GPIO.input(2) == False: 
print ("marshmallow makes a good input") 
    time.sleep(0.5) 



File "marshmallow.py" , line 11 
    print ("marshmallow makes a good input") 
    ^
IndentationError: expected an indented block 

我得到這個代碼從一本書,我不知道什麼是錯的......

回答

0
while True: 
    if GPIO.input(2): 
     print ("marshmallow makes a good input") 
    time.sleep(0.5) 

Python使用indentation to group statements。 if語句需要在下面縮進的語句(或語句)。 print聲明得到執行,如果GPIO.input(2)是Truthy。


請注意,if GPIO.input(2) == False不被視爲Pythonic。寫這個的通常方式是

if not GPIO.input(2): 
+0

的代碼應該當虛假和印刷「棉花糖是一個很好的投入」時,什麼都不要做,但無論如何要感謝 – user3574657

1

if塊(或任何爲此事塊)的代碼必須進一步比打開的塊中的語句進行縮進。在這種情況下,這意味着你的代碼應該是這樣的:

while True: 
    if GPIO.input(2) == False: 
    print ("marshmallow makes a good input") 
    time.sleep(0.5) 

或許是這樣的:

while True: 
    if GPIO.input(2) == False: 
    print ("marshmallow makes a good input") 
    time.sleep(0.5) 

從你的代碼已經發布,它不是完全清楚這兩個你想要的(儘管它可能是前者 - 你可能想在每次循環迭代中都睡覺)。

還要注意的是,在Python代碼,最好是縮進的每個級別由4個空格,而不是2 - 所以理想,該代碼應該是這樣的:

while True: 
    if GPIO.input(2) == False: 
     print ("marshmallow makes a good input") 
    time.sleep(0.5) 
相關問題