SyntaxError: Invalid syntax. Kein erkennbarer Grund

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
Gameniti
User
Beiträge: 6
Registriert: Montag 9. Januar 2017, 21:10

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.
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

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":
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Gameniti
User
Beiträge: 6
Registriert: Montag 9. Januar 2017, 21:10

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.
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@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):
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

@Sirius3 Danke für die tollen Beispiele, ersteres ist bekannt, das letzte gefällt mir besonders. Man(n) lernt nie aus.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Antworten