2015-05-07 11 views
16

Ich habe den folgenden Code und erhalten Sie die folgende Fehlermeldung, wenn sie versuchen, um sie auszuführen:Nameerror: name ‚true‘ definiert ist, nicht

NameError: name 'true' is not defined 

ich das Raspberry Pi zu machen versuchen, einen HTML-Skript ausgeführt werden, wenn es empfängt eine Eingabe auf dem Port 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

sollte 'während true' – marmeladze

Antwort

35

Python booleschen Konstanten werden aktiviert: True und False mit Großbuchstaben und TF sind.

Die Kleinbuchstaben Varianten sind nur gültige freie Namen für Variablen, so dass Sie sie für was auch immer Sie wollen, z. true = False (nicht empfohlen; P).

+5

Leider sein, in 3.x können Sie nicht mehr tun' __builtin __. Wahr = false', so ohne in 'ctypes.pythonapi ',' true = False' ist die beste Option für verwirrende Philosophiestudenten. – abarnert

1

Sie haben keine Variable true definiert. Vielleicht meinen Sie den eingebauten booleschen Wert True?

-1

while True:

# aber scheint wie inifite Schleife

+0

Es ist. Dies ist ein sehr häufiges Muster für die Annahme einer Streaming-Eingabe ... 'while (true) {input = get_input (stream); Prozess (Eingabe); } 'und so weiter. So etwas wie ein analoges Signal muss so oft wie möglich auf unbestimmte Zeit verarbeitet werden. Zum Beispiel würde ein selbstfahrendes Auto auf einer Endlosschleife über seine Kameras, Radar und andere Sensoren laufen und die Daten tausende Male pro Sekunde verarbeiten, um in der Lage zu sein, angemessen auf das Geschehen zu reagieren. – AllTheTime