为什么我的"ELSE"语句仍然打印,即使我的"IF"总是为真
我有一个数组,我正在尝试在其中搜索以查看其中是否有子字符串。当它确实有该子字符串时,它应该使用 if 和 elif 语句运行另一个 for 循环
test = ['SCHEDULE:1457H', 'SCHEDULE:1550H', 'SCHEDULE:1740H', 'SCHEDULE:1705H']
task = ['ST:124', 'BROWSE:testB', 'DOWNLOAD:DLthis', 'REJECT:rejectme', 'APPROVE:goodtoGo', 'ST:123']
while time.time() < t_end:
index = 0
for n in test:
if "1457H" in n:
for item in task:
if "ST" in task[index]:
print(task[index])
index += 1
time.sleep(2)
elif "LOGIN" in task[index]:
print(task[index])
index += 1
elif "BROWSE" in task[index]:
print(task[index])
index += 1
elif "DOWNLOAD" in task[index]:
print(task[index])
index += 1
elif "REJECT" in task[index]:
print(task[index])
index += 1
elif "APPROVE" in task[index]:
print(task[index])
index += 1
else:
print("Sleeping")
time.sleep(2)
Results:
ST:124
BROWSE:testB
DOWNLOAD:DLthis
REJECT:rejectme
APPROVE:goodtoGo
ST:123
Sleeping
然后由于 while 循环再次重复它。我不知道为什么"ELSE"语句仍然打印。我尝试修复"ELSE"语句的制表符空间,但它仍然可以打印,甚至比当前的结果更糟糕。
您在代码中混合使用制表符和空格。不要这样做。编辑器设置为将制表符扩展到 4 个空格,而 Python 将制表符扩展到 8 个空格。对于您的代码,有些行仅使用制表符,有些行仅使用空格,有些行似乎混合了制表符和空格,就 Python 而言,这会导致一组完全不同的缩进块。
else
分支缩进以匹配for
循环,而不是if
测试。这意味着else
块始终在for
循环在没有break
语句的情况下完成时运行,而不是在if
测试失败时运行。
将编辑器配置为仅在缩进时使用空格,并将所有制表符替换为 4 个空格,您的代码将正常工作。