If Anweisung vorzeitig beenden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Knuffi
User
Beiträge: 62
Registriert: Dienstag 28. Oktober 2014, 19:52

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
Sirius3
User
Beiträge: 18253
Registriert: Sonntag 21. Oktober 2012, 17:20

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.

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"
Knuffi
User
Beiträge: 62
Registriert: Dienstag 28. Oktober 2014, 19:52

ok, alles klar. danke
Antworten