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: 4538
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: 14047
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.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten