2016-04-09 7 views
0

Ich mache ein Programm, das bestimmt, in welcher Periode in der Schule Sie sind; Die Zeitpläne unterscheiden sich an bestimmten Tagen, so dass Sie das Programm einfach ausführen können, anstatt herauszufinden, in welchem ​​Zeitplan Sie sich gerade befinden.Ausgabe Text, wenn zwischen zwei Datetime-Werten

Ich verwende den "DateTime" Import; aber das Problem ist, dass bestimmte Klassen bei 7:45 beginnen und bei 9:50 enden können. Die Art, wie ich die zwei Zeiten programmiere, widerspricht sich gegenseitig, so dass der Text nicht angezeigt wird.

hier ist der Code-Snippet:

if sch == "A": 
    if hour >= 7 and min >= 45: 
     if hour <= 9 and min <= 50: 
      print("It is period 1; Class ends at 9:50AM") 

Es wurde zuvor im Programm festgelegt, dass wir im Zeitplan ‚A‘ sind, die um 7:45 Uhr beginnt und um 9:50 Uhr endet. Kurz gesagt, ich möchte, dass die Botschaft zwischen diesen beiden Zeiten angezeigt wird.

+0

Post einige erwarteten und tatsächlichen Ausgang so können wir Ihnen etwas mehr – n1c9

+0

Ihr Schlepptau helfen, wenn die werden kann 'wenn 9> = Stunde> = 7 und 50> = min> = 45: 'aber Ihre Logik ist falsch, die Zeit kann zwischen 7:45 und 9: 500 liegen, während die Minute nicht zwischen 45 und 50 liegt. Wenn Sie Datumsangaben verwenden, dann vergleichen Sie einfach die Datumsangaben –

Antwort

0

Verwenden datetime für diese Aufgabe:

from datetime import datetime 

begin = '07:45:00' 
end = '09:50:00' # for example 
current_time = '10:32:13' 

FMT = '%H:%M:%S' # format time 

if sch == "A": 
    if datetime.strptime(begin, FMT) < \ 
      datetime.strptime(current_time, FMT) < \ 
      datetime.strptime(end, FMT): 
     print("It is period 1; Class ends at 9:50AM") 
0

Wie ich Ihre Logik ist aus kommentiert, weil Sie für Minuten nicht erlauben, anders als alles, was in dem 45-50-Bereich, sind Ihre Datetimes so kleben mit dem Vergleich datetimes.time's sehen, wenn die Stunde und Minute im Bereich 7:45-9:50 liegen.

from datetime import time 

# cretate a start and end time 
start, end = time(7, 45, 0), time(9, 50, 0) 

# pass whatever hour and min are in your code to time 
hour_min = time(7, 46) 

# check the times falls in the range 7:45-9:50 
if start <= hour_min <= end: 
    print("It is period 1; Class ends at 9:50AM") 
+0

Diese Lösung ergab jedoch keine Fehler es wurde nichts ausgegeben (vermutlich weil es nicht diese Zeit ist) ... Ich habe mich gefragt, ob es eine Möglichkeit gibt, die Zeit für Testzwecke zu "imitieren". – iw0542

+0

@ iw0542, verwenden Sie einfach einen Bereich, 'für hr in Bereich (24): für mn im Bereich (60)' ... –

+0

Ok. Könnten Sie bitte Ihren Code kommentieren, damit ich ihn ein wenig besser verstehen kann? Ich bin mit dieser Verwendung von datetime nicht vertraut. EDIT: Auch "Es ist Punkt 1; Klasse endet um 9:50 Uhr" scheint immer zu erscheinen. Ich glaube, ich verstehe etwas falsch. – iw0542

0

Sie können dies versuchen:

from datetime import time 

if sch == "A": 
    if time(hour=7, minute=45) <= time(hour=hour, minute=minute) <= time(hour=9, minute=45): 
     print("It is period 1; Class ends at 9:50AM") 
Verwandte Themen