2016-04-09 25 views
0

Okulda hangi sürenin bulunduğunu belirleyen bir program hazırlıyorum; programlar belirli günlerde farklılık gösterir, böylece programı hangi programda olduğunuzu bulmak yerine sadece çalıştırabilirsiniz.İki datetime değeri arasında çıktı metni çıktı

'DateTime' içe aktarma aracını kullanıyorum; ama problem belli sınıfların 7: 45'te başlayıp 9: 50'de başlayabileceğidir. İki kez programlama şeklim birbiriyle çelişir, bu yüzden metin görüntülenmeyecektir. Biz zamanında 07:45 AM başlar ve 09:50 saatleri biter 'A' olan programda önceden belirlenmiştir

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") 

: Burada

kod snippet'idir. Kısacası, mesajı iki kez arasında görüntülemesini istiyorum. Bu görev için

+0

sonrası bazı beklenen ve gerçek çıkış yüzden sana biraz daha – n1c9

+0

Kişisel yedekte yardımcı olabilir 9> = saat> = 7 ve 50 if> = min> = 45: 'ama mantığınız yanlış, zaman 7:45 ve 9: 500 arasında iken dakika 45 ve 50 betbenn olmazken, eğer datetimes kullanıyorsan, o zaman datetimes –

cevap

0

Kullanım datetime:

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

Sana 45-50 aralığında şeyden daha başka dakika izin vermez çünkü mantık kapalı yorumladığı gibi, senin bu kadar karşılaştırarak sopa tarihsaat kullanarak vardır Saat ve dakika 7:45-9:50 aralığında olup olmadığını görmek datetimes.time's.

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

'u karşılaştır hiçbir şey çıkmadı (varsayımsal olarak o zaman olmadığı için). Test etme zamanını taklit etmenin herhangi bir yolu olup olmadığını merak ediyordum. – iw0542

+0

@ iw0542, sadece menzil kullanın, 'menzil için hr (24): menzil için mn (60)' ... –

+0

Tamam. Kodunuzu ekleyebilir misiniz, böylece biraz daha anlayabilir miyim? Bu datetime kullanımına pek aşina değilim. DÜZENLEME: Ayrıca "Bu süre 1'dir; Sınıf 9:50 de biter" her zaman ortaya çıkar. Sanırım üzgün bir şeyi yanlış anladım. – iw0542

0

bu deneyebilirsiniz: en ` haline gelebilir eğer

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")