2015-05-07 29 views
16

Mam następujący kod i pojawia się następujący komunikat o błędzie, gdy próbuje go uruchomić:NameError: nazwa „prawda” nie jest zdefiniowane

NameError: name 'true' is not defined 

Próbuję dokonać Raspberry Pi uruchomienia skryptu HTML, gdy otrzyma wejście na porcie 17:

import RPi.GPIO as GPIO 
import time 
import os 

inputSignal = 17 
GPIO.setmode(GPIO.BCM) 
GPIO.setup(inputSignal,GPIO.IN) 
while true: 
    if (GPIO.input(inputSignal)): 
     os.system("html /home/pi/index.html") 
    else: 
     print("No Input") 
+2

powinno być 'podczas true' – marmeladze

Odpowiedz

35

stałe logiczne Pythona są kapitalizowane: True i False z wielkimi literami T i F odpowiednio.

Warianty pisane małymi literami są po prostu poprawnymi nazwami wolnymi zmiennych, więc można ich używać do dowolnego celu, np. true = False (niezalecane; P).

+5

Niestety, w wersji 3.x nie można już zrobić' __builtin __. True = FALSE, więc bez uzyskiwania w 'ctypes.pythonapi ',' true = False' to najlepsza opcja dla zagmatwanych studentów filozofii. – abarnert

1

Nie zdefiniowałeś zmiennej true. Może chodziło Ci o wbudowaną wartość boolowską True?

-1

while True:

# ale wydaje się inifite pętli

+0

To jest. Jest to bardzo powszechny wzorzec akceptowania wejścia strumieniowego ... 'while (true) {input = get_input (stream); proces (wejście); } 'i tak dalej. Sygnał analogowy musi być przetwarzany tak często, jak to możliwe, w nieskończoność. Na przykład, samozasiąca się bolid będzie działał na nieskończonej pętli nad swoimi kamerami, radarem i innymi czujnikami i przetwarza dane tysiące razy na sekundę, aby móc odpowiednio reagować na to, co się dzieje. – AllTheTime