Seite 1 von 1

SyntaxError: Invalid syntax. Kein erkennbarer Grund

Verfasst: Donnerstag 15. November 2018, 16:06
von Gameniti
Hallo,

Code: Alles auswählen

if (strftime("%H.%M", lt) <= "16.00" and >= "15.00"):
Trotz : kommt die Meldung
SyntaxError: invalid syntax
mit Hinweis auf dem = bei >= "15.00".

Was ich eigentlich machen möchte ist dass etwas zwischen 2 Uhrzeiten, hier als Test 15 und 16 Uhr, ausgeführt wird.

Hoffe das ist irgendwie klar was ich meine.

Re: SyntaxError: Invalid syntax. Kein erkennbarer Grund

Verfasst: Donnerstag 15. November 2018, 16:11
von ThomasL
Es wird zuerst strftime() >= "16.00" verglichen, das ergibt ein Boolean Ergebnistyp und darauf wendest du "and" mit einem String an, das geht nicht.

Code: Alles auswählen

if strftime("%H.%M", lt) <= "16.00" and strftime("%H.%M", lt) >= "15.00":

Re: SyntaxError: Invalid syntax. Kein erkennbarer Grund

Verfasst: Donnerstag 15. November 2018, 16:25
von Gameniti
ThomasL hat geschrieben: Donnerstag 15. November 2018, 16:11 Es wird zuerst strftime() >= "16.00" verglichen, das ergibt ein Boolean Ergebnistyp und darauf wendest du "and" mit einem String an, das geht nicht.

Code: Alles auswählen

if strftime("%H.%M", lt) <= "16.00" and strftime("%H.%M", lt) >= "15.00":
Ahh, das macht Sinn.
Vielen Dank, hat funktioniert.

Re: SyntaxError: Invalid syntax. Kein erkennbarer Grund

Verfasst: Donnerstag 15. November 2018, 17:33
von __blackjack__
Wobei ich wahrscheinlich weder zweimal die gleiche Umwandlung vornehmen würde, noch überhaupt Zahlen in Zeichenketten umwandeln um sie zu vergleichen. Und ich würde das dann auch mit verketteten Vergleichen statt mit ``and`` machen.

Re: SyntaxError: Invalid syntax. Kein erkennbarer Grund

Verfasst: Freitag 16. November 2018, 08:16
von Sirius3
@ThomasL: für Vergleiche "zwischen" kennt Python die Verkettung von Vergleichsoperatoren

Code: Alles auswählen

if "15:00" <= strftime("%H:%M", lt) <= "16:00":
gäbe es das <= nicht wäre der Vergleich simpel:

Code: Alles auswählen

if lt.tm_hour == 15:
will man die Flexibilität mit den Minuten, würde man Tuple vergleichen:

Code: Alles auswählen

if (15, 0) <= (lt.tm_hour, lt.tm_min) <= (16,0):

Re: SyntaxError: Invalid syntax. Kein erkennbarer Grund

Verfasst: Freitag 16. November 2018, 09:34
von ThomasL
@Sirius3 Danke für die tollen Beispiele, ersteres ist bekannt, das letzte gefällt mir besonders. Man(n) lernt nie aus.