python list if语句

问题描述:

我想根据潮汐高度制作一个时间表生成器我在下面的列表中有潮汐高度,每个值代表特定时间潮汐的高度,例如9 am = 111 10 am = 123 etc ..python list if语句

tide_list = [111, 123, 135, 143, 146, 140, 128, 113, 99]

我想显示的消息仅当潮是在100以上,例如,在这种情况下 9:00〜16:00 是有比设置多个这样做其它任何好办法如果陈述?

我试图把列表的每个值放入单个变量,但看起来太乱了。

更新:基本上是试图简化下面的代码

tide_list = [111, 123, 135, 143, 146, 140, 128, 113, 99] 

time9,time10,time11,time12,time13,time14,time15,time16,time17=tide_list 

if(time9>=100 and time10>=100 and time11>=100 and time12>=100 and 
time13>=100 and time14>=100 and time15>=100 and time16>=100 and 
time17>=100): 
    print('9:00~17:00') 
elif time9>=100 and time10>=100 and time11>=100 and time12>=100 and 
time13>=100 and time14>=100 and time15>=100 and time16>=100 and time17<100: 
print('9:00~16:00') 
elif time9>=100 and time10>=100 and time11>=100 and time12>=100 and 
time13>=100 
and time14>=100 and time15>=100 and time16<100 and time17<100: 
print('9:00~15:00') 
elif time9>=100 and time10>=100 and time11>=100 and time12>=100 and 
time13>=100 and time14>=100 and time15<100 and time16<100 and time17<100: 
print('9:00~14:00') 
etc... 
+0

如果'tide_list = [111,0,111,0,111]'或类似的东西,预期的输出是什么? –

+0

预计在这种情况下将是一个错误消息,因为在我看到的时间范围内,潮汐应该永远不会波动很多 – Jappyman

+0

代码不会比逻辑复杂。 –

这个答案假定在给定的时期内潮流不会出现好几次。

# Sample data 
tide_list = [111, 123, 135, 143, 146, 140, 128, 113, 99] 

# Filter out the low values and replace the high values with their index in the list (plus an offset) 
above = [i+9 for i, level in enumerate(tide_list) if level >= 100] 

# You could replace this with the error logic of your choice 
assert len(above) >= 1, 'The tide never came' 

# Format and print the result 
print('{0:02d}:00~{1:02d}:00'.format(above[0], above[-1])) 
+1

非常感谢你SwiftsNamesake!这正是我想要它做的,并用几种不同的测试数据进行测试,并且似乎对我想要的产生了奇妙的效果 – Jappyman

+0

不客气。显然,你是Python的新手,所以我希望你能理解它是如何工作的。 – SwiftsNamesake

所有你需要的是一个for环和一个if声明:

tide_list = [111, 123, 135, 143, 146, 140, 128, 113, 99] 

for height in tide_list: 
    if height > 100: 
     print(height) 
+0

感谢您的回复!但我想根据潮流显示不同的信息,例如,如果列表是tide_list = [80,100,200,70] print('10 am~11am') – Jappyman

+1

@Jappyman如果这个答案不正确,你不应该接受它。 – SwiftsNamesake

+0

对不起,我错误地接受了它, – Jappyman

谢谢大家谁回答, 我重新思考我的逻辑,我决定按照下面这样做,这看起来比我的第一次尝试更简单。

tide_list = [111, 123, 135, 143, 146, 140, 128, 113, 99] 

time9,time10,time11,time12,time13,time14,time15,time16,time17=tide_list 

if time9>=100: 
    start ='9:00~' 
elif time10>=100: 
    start ='10:00~' 
elif time11>=100: 
    start="11:00~" 
elif time12>=100: 
    start ='12:00~' 
elif time13>=100: 
    start="13:00~" 
elif time14>=100: 
    start ='14:00~' 
elif time15>=100: 
    start="15:00~" 
elif time16>=100: 
    start ='16:00~' 
elif time17>=100: 
    start="17:00~" 
else: 
    print("NO START TIME WAS SET!! CHECK DATA") 
if time17>=100: 
    end ='17:00' 
elif time16>=100: 
    end ='16:00' 
elif time15>=100: 
    end="15:00" 
elif rime14>=100: 
    start ='14:00' 
elif time13>=100: 
    end="13:00" 
elif time12>=100: 
    end ='12:00' 
elif time11>=100: 
    end="11:00" 
elif time10>=100: 
    end='10:00' 
elif time19>=100: 
    end="9:00" 
else: 
    print('NO END TIME SET CHECK DATA') 
print start+end 
+0

所以你基本上想要一个时间框架,当潮汐超过一定的阈值?此外,列表中的每个条目都代表从9点开始的整个小时的水位? – SwiftsNamesake

+0

是的,这是正确的! – Jappyman