Syntax Fehler?

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
wofis
User
Beiträge: 1
Registriert: Sonntag 4. August 2019, 18:12

Hallo!

Ich versuche ein kleines Python Skript für den Raspberry Pi zu schreiben. Leider bekomme ich immer einen Syntax Fehler in Zeile 13 ( else(GPIO.output(input_pin)) ) zurück obwohl mir die Schreibweise des Codeblocks stimmen zu scheint. Hat jemand einen Tipp für mich wo der Fehler liegen könnte?

Code: Alles auswählen

import time
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)

input_pin = 17

while True:
	if(GPIO.input(input_pin)):
		print("offen")
	time.sleep(1)
	
	else(GPIO.output(input_pin)):
		print("geschlossen")
	time.sleep(1)
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du musst elif statt else verwenden, wenn du eine Bedingung prüfen willst. Und weniger Klammern mit dem Salzstreuer machen das ganze lesbarer, um die Bedingungen in if/elif gehören keine äußeren Klammern.
Benutzeravatar
sparrow
User
Beiträge: 4637
Registriert: Freitag 17. April 2009, 10:28

Folgendes zum Codestyle, damit sowohl du als auch andere, den Code einfacher verstehen können:

Eingerückt wird mit 4 Leerzeichen, nicht mit Tabstopps.

Per Konvention schreibt man Konstanten GROSS. Es ist also INPUT_PIN, nicht input_pin.

weder if noch else sind Funktionen, daher sind die Klammer danach unnötig.

Und zusätzlich zu dem, was deets sagt: Die Einrückung deinr time.sleeps() stimmt nicht.
Benutzeravatar
__blackjack__
User
Beiträge: 14326
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Und noch ergänzend bei `GPIO.output()` etwas zu übergeben was `input_pin` heisst, ist verwirrend, und es fehlt dann auch noch der Wert, also ob da nun Strom an oder aus sein soll. Zudem fehlt vorher das `setup()` für den Pin.
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
Antworten