Hallo zusammen,
ich befinde mich mit meinem Programm in einer Sackgasse und bitte euch um Hilfe.
Es soll eine If Anweisung vorzeitig beendet werden. Leider funktioniert break so nicht. Fehlermeldung:
break
^^^^^
SyntaxError: 'break' outside loop
Hier der Code mit der Bitte um Tipps zur Problemlösung:
################# WZ #########################
if (shellwz ==1):
stwz0= f'http://{shellywz_ip}/relay/0?state'
try:
response = requests.get(stwz0, timeout=5)
except ConnectionError:
wzstatusrelais0 = "XXX"
break
st0 = response.json()
if (st0["ison"]== True):
wzstatusrelais0 = "ein"
if (st0["ison"]== False):
wzstatusrelais0 = "aus"
Besten Dank
Knuffi
If Anweisung vorzeitig beenden
Eingerückt wird immer mit 4 Leerzeichen pro Eben. Bei einem Leerzeichen sieht man die Einrückung nicht.
Bei if sind die Klammern überflüssig.
Bei Variablennamen ist verständlichkeit essentiell. shellwz versteht man nicht, und warum bei shellywz_ip ein y mehr ist, ist nicht logisch. Das macht das Programmieren nur unnötig schwer, weil man sich neben der kryptischen Zeichenkombination auch noch merken muß, wann welche Zusatzzeichen eingestreut sind.
Um Operatoren werden auf beiden Seiten Leerzeichen gesetzt, zur erhöhten Lesbarkeit.
Mit `break` kann man Schleifen abbrechen, if ist aber keine Schleife. Da benutzt man einfach ein weiteres if, else, oder ähnliches und rückt den nachfolgenden Code weiter ein.
In Deinem Fall ist das der else-Block zum try-Block.
Wenn man sich ausschließende if-Bedingungen hat, benutzt man elif, wenn es die gegenteilige Bedingung gibt, nimmt man else.
Mit True oder False vergleicht man nicht explizit.
Bei requests sollte man nicht nur den ConnectionError prüfen, sondern auch, ob die Rückgabe fehlerfrei ist.
Bei if sind die Klammern überflüssig.
Bei Variablennamen ist verständlichkeit essentiell. shellwz versteht man nicht, und warum bei shellywz_ip ein y mehr ist, ist nicht logisch. Das macht das Programmieren nur unnötig schwer, weil man sich neben der kryptischen Zeichenkombination auch noch merken muß, wann welche Zusatzzeichen eingestreut sind.
Um Operatoren werden auf beiden Seiten Leerzeichen gesetzt, zur erhöhten Lesbarkeit.
Mit `break` kann man Schleifen abbrechen, if ist aber keine Schleife. Da benutzt man einfach ein weiteres if, else, oder ähnliches und rückt den nachfolgenden Code weiter ein.
In Deinem Fall ist das der else-Block zum try-Block.
Wenn man sich ausschließende if-Bedingungen hat, benutzt man elif, wenn es die gegenteilige Bedingung gibt, nimmt man else.
Mit True oder False vergleicht man nicht explizit.
Bei requests sollte man nicht nur den ConnectionError prüfen, sondern auch, ob die Rückgabe fehlerfrei ist.
Code: Alles auswählen
if shellwz == 1:
url = f'http://{shellywz_ip}/relay/0?state'
try:
response = requests.get(url, timeout=5)
response.raise_for_status()
except ConnectionError:
wzstatusrelais0 = "XXX"
else:
data = response.json()
wzstatusrelais0 = "ein" if data["ison"] else "aus"