2014-12-04 104 views
0

將下面的結果等同於加入,如果條件連接多個IFS在1個語句

if (now_time > time(19,00) and now_time < time(7,00)): 
else if (now_time > time(9,50) and now_time < time(12,00)): 
else if (now_time > time(14,30) and now_time < time(16,15)): 

結果

if ((now_time > time(19,00) and now_time < time(7,00)) or 
    (now_time > time(9,50) and now_time < time(12,00)) or 
    (now_time > time(14,30) and now_time < time(16,15))): 

回答

3

假設ifelif案件運行相同的代碼,是的,但你也可以有:

if (time(19, 00) < now_time < time(7, 00) or 
    time(9, 50) < now_time < time(12, 00) or 
    time(14, 30) < now_time < time(16, 15)): 

甚至是這樣的:

if any(time(*start) < now_time < time(*end) 
     for start, end in [((19, 0), (7, 0)), ...]): 

,讓您更輕鬆地添加和刪除案件。

+0

真的可以同時> 19和<7嗎? – Aprillion 2014-12-04 09:23:14

+2

不是用數字來表示,而是取決於OP的「時間」。 – jonrsharpe 2014-12-04 09:23:57

+0

爲什麼會出現類型錯誤: '模塊' 對象不是可調用,我現在使用= datetime.now() now_time = now.time() 如果時間(19,00) Ossama 2014-12-04 12:21:49

1

你可以做這樣的事情如下:if start < now < end:

您的兩個示例並不等同,因爲您現在將所有案例合併爲一個。