Вы сравниваете строки и целые числа. Числа всегда сортируются перед строками, поэтому time
всегда будет ниже, чем List1[i]
и List2[i]
.
Используйте целые в списках вместо:
List1 = [6, 9, 16, 19, 0, 3, 6, 0, 6, 12, 18]
List2 = [9, 16, 19, 24, 3, 6, 19, 6, 12, 18, 24]
Python 2 пытается сделать все упорядочиваемое, поэтому он является законным для сравнения строк и целых чисел, но это также означает, что вы можете делать ошибки, как эти , Python 3 удалил эту цель, и попытка сравнить строки с целыми числами, как это, приводит к ошибке.
Обратите внимание, что вы также используете целочисленное деление, потому что оба операнда для оператора деления /
являются целыми числами. Вместо этого вы можете использовать деление с плавающей запятой:
time = id/60.0
Хотя я не совсем уверен, какой результат вы ожидали от подразделения. При целочисленном делении результат 60/60
, 61/60
и 62/60
всегда будет 1
.
Ваше выражение if
может быть упрощена сравнения цепочки:
if List1[i] <= time <= List2[i]:
Вы можете использовать функцию zip()
на пары значений из двух списков:
for id in range(60, 63):
time = id/60.0
for lower, higher in zip(List1, List2):
if lower <= time <= higher:
print 'inside if with lower={}, higher={}, time={}'.format(lower, higher, time)
Это выходы:
>>> List1 = [6, 9, 16, 19, 0, 3, 6, 0, 6, 12, 18]
>>> List2 = [9, 16, 19, 24, 3, 6, 19, 6, 12, 18, 24]
>>> for id in range(60, 63):
... time = id/60.0
... for lower, higher in zip(List1, List2):
... if lower <= time <= higher:
... print 'inside if with lower={}, higher={}, time={}'.format(lower, higher, time)
...
inside if with lower=0, higher=3, time=1.0
inside if with lower=0, higher=6, time=1.0
inside if with lower=0, higher=3, time=1.01666666667
inside if with lower=0, higher=6, time=1.01666666667
inside if with lower=0, higher=3, time=1.03333333333
inside if with lower=0, higher=6, time=1.03333333333
@ shuttle87: ОП говорится, что они пытались это тоже. –
Также может стоить делать 'для L1, L2 в zip (List1, List2):' – user2097159
'id/60' возвращает' 1' для всех значений вашего диапазона. – njzk2