2016-02-13 18 views
5

Potrzebuję pomocy w uzyskaniu podania instrukcji if. Mam problem z instrukcją if, gdy próbuję przejść, gdy próbuję porównać wartości używając trzech zmiennych.Porównywanie trzech zmiennych dla instrukcji if

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" 

mogę przejść na każdej if bez problemu, ale mój problem jest, gdy mam zmienną start_time z wartością 22:35 których nie jest równa current_time wartości 23:48. Więc jak mogę porównać z wartościami między start_time i current_time, które chcę porównać, aby zobaczyć, czy jest on mniejszy niż wartość 00:00 ze zmiennej stop_time?

Chcę sprawdzić, czy wartość ze zmiennej stop_time jest mniejsza niż current_time i start_time.

Po prostu wyobraź sobie, że oglądasz program telewizyjny, który zaczyna się od 22:35 w twoim bieżącym czasie. Oglądasz, która jest mniejsza niż przed zakończeniem programu pod numerem 00:00, więc sprawdzasz czas ponownie przed końcem czasu 00:00, który mówi, że jest jeszcze w połowie. Następnie sprawdzisz to później w bieżącym czasie, który jest późniejszy niż 00:00, co oznacza, że ​​program się zakończył.

Cóż, na moim kodeksie zawsze będę miał przepustkę na elif current_time > stop_time:, ponieważ zawsze otrzymuję numer print "program has finished", który powinienem mieć zamiast tego print "program is half way".

Jak można porównać trzy wartości pomiędzy zmiennymi start_time i current_time aby sprawdzić, czy jest ona mniejsza niż i sprawdzić, czy jest ona mniejsza wartość 00:00 ze zmiennej stop_time?

EDIT: Oto co mogę użyć je jako ciąg kiedy ja dostaję godziny i minuty od formatu daty zwłaszcza rok, miesiąc, dzień, godzina, minuta i sekunda

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

Czy wszystkie te wartości czasu nie powinny być rzeczywistymi obiektami datetime lub wartością time.time()? – spicavigo

+1

Jeśli czasy są tylko HH: MM i przekraczasz granicę dnia, to nigdy nie możesz porównać nawet 2 wartości. – spicavigo

Odpowiedz

0

za pomocą dwóch porównania i and logiczna moglibyśmy stworzyć coś takiego:

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

Ale to rzeczywisty problem ma do czynienia z 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

Myślę, że jego problem polega na tym, że 00:00 jest mniej niż co drugi raz. – spicavigo

+0

dziękuję, ale nie działało zbyt dobrze. Nie mogę przekazać oświadczenia, ponieważ ten działa bardzo dobrze 'elif start_time! = Current_time

+1

@spicavigo Oh! Jest to zupełnie inne pytanie niż użycie trzech zmiennych na instrukcji if –

Powiązane problemy