startDate,stopDate,startTime,stopTime,startBehavior和stopBehavior都是具有相同长度的列表。我在第5行中获得了超出范围的列表索引(如果startDate [i]!= stopDate [j]),我不确定为什么。它曾经工作过,现在却没有。我正在尝试根据if / elif语句中的条件打印特定行为。
i = 0
while (i < len(startDate)):
j = 0
while (j < len(stopDate)):
if startDate[i] != stopDate[j]:
j += 1
elif startDate[i] == stopDate[j]:
if stopTime[j] < startTime[i]:
j += 1
elif stopTime[j] > startTime[i]:
if startBehavior[i] != stopBehavior[j]:
j += 1
elif startBehavior[i] == stopBehavior[j]:
print(startBehavior[i])
print(stopBehavior[j])
print('')
i += 1
任何帮助将不胜感激!谢谢你!
答案 0 :(得分:0)
如果运行以下代码段,即使我明显大于100,它也将永远运行。
i = 0
while i < 100:
while True:
i += 1
print(i)
您的代码正在执行类似的操作-在i == len(startDate) - 1
的情况下; startDate[i] == stopDate[j]
; stopTime[j] > startTime[i]
;和startBehavior[i] == stopBehavior[j]
,您的代码将使i递增,从而i == len(startDate)
,然后,由于j < len(stopDate)
仍为True
,因此您将不会退出 second while循环。尝试访问startDate[i]
时,您会得到一个IndexError
。
这在某种程度上取决于数据,因此它可能以前从未起作用过,而没有这个问题。