2016-02-13 9 views
5

Ich brauche Hilfe mit Get-Pass auf die if-Anweisung. Ich habe ein Problem mit der if-Anweisung, da ich versuche, zu bestehen, wenn ich versuche, die Werte mit drei Variablen zu vergleichen.Vergleichen drei Variablen auf if-Anweisung

start_time = '22:35' 
current_time = '23:48' 
stop_time = '00:00' 

if current_time == start_time: 
    print "the program has started" 


elif start_time != current_time < stop_time: 
    print "program is half way" 


elif current_time > stop_time: 
    print "program has finished" 

kann ich ohne Probleme auf jeder if-Anweisung übergeben, aber mein Problem ist, wenn ich die Variable start_time mit dem Wert habe 22:35, die sie nicht gleich current_time Wert 23:48 ist. Also, wie kann ich mit den Werten zwischen start_time und current_time vergleichen, um zu sehen, ob es weniger als der Wert 00:00 von der Variablen stop_time ist?

Ich möchte überprüfen, ob der Wert aus der Variablen stop_time kleiner ist als current_time und start_time.

Stellen Sie sich vor, Sie sehen gerade das Fernsehprogramm, das in Ihrer aktuellen Zeit unter 22:35 gestartet wird. Sie sehen, was es weniger als vor dem Programm bei 00:00 fertig ist, also überprüfen Sie die Zeit später wieder vor der Endzeit 00:00, es heißt es ist noch halb durch. Dann überprüfen Sie es später zu Ihrer aktuellen Zeit, die es nach als 00:00 ist, also es sagt, dass das Programm beendet ist.

Nun zu meinem Code, ich werde immer auf die elif current_time > stop_time: weitergeben, wie ich immer die print "program has finished" bekommen, die ich print "program is half way" stattdessen haben sollte.

Wie kann man drei Werte zwischen den Variablen vergleichen start_time und current_time zu sehen, ob es kleiner als ist und prüfen, ob es kleiner der Wert 00:00 aus den Variablen stop_time?

EDIT: Hier ist, was ich sich als String verwenden, wenn ich die Stunden und Minuten vom Datumsformat speziell für Jahr, Monat, Tag, Stunden, Minuten und Sekunden bin immer

start_date = str(stop_date[0]) #get start_date date format from database 
stop_date = str(stop_date[1]) #get start_date date format from database 
get_current_time = datetime.datetime.now().strftime('%H:%M') 
get_start_time = time.strptime(start_date, '%Y%m%d%H%M%S') 
start_time = time.strftime('%H:%M', get_start_time) 
get_stop_time = time.strptime(stop_date, '%Y%m%d%H%M%S') 
stop_time = time.strftime('%H:%M', get_stop_time) 
current_time = str(get_current_time) 
+0

Sollten nicht alle diese Zeitwerte tatsächliche datetime Objekte oder time.time() Werte sein? – spicavigo

+1

Wenn die Zeiten nur HH: MM sind und du die Tagesgrenze überschreitest, dann kannst du niemals sogar 2 Werte vergleichen – spicavigo

Antwort

0

zwei Verwenden Vergleiche und die and logische wir so etwas wie dies schaffen könnte:

if current_time > start_time and current_time < stop_time: 
    #do work 

Aber das eigentliche Problem ist, die sich mit date and time

current_time = datetime.now() #lets say this is 2016, 2, 12, 17:30 
    start_time = datetime.datetime(2016,2,12,16,30) # or datetime.strptime(start_time) 
    end_time = datetime.datetime(2016,2,13,0,0) 
if current_time == start_time: 
    print "the program has started" 


elif current_time > start_time and current_time < stop_time: 
    print "Program is still running" 


elif current_time > stop_time: 
    print "program has finished" 
+1

Ich denke sein Problem ist, dass 00:00 weniger ist als jedes andere Mal. – spicavigo

+0

danke, aber es hat nicht sehr gut funktioniert. Ich kann die Aussage nicht weitergeben, da diese sehr gut funktioniert 'elif start_time! = Current_time

+1

@ spicavigo Oh! Das ist eine ganz andere Frage als die Verwendung von drei Variablen in einer if-Anweisung. –

Verwandte Themen