2014-12-04 94 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:

您的两个示例并不等同,因为您现在将所有案例合并为一个。