为什么我的" 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循环再次重复它。我无法弄清楚为什么&#34; ELSE&#34;声明仍然打印。我试着修复&#34; ELSE&#34;的标签空间。声明,它仍然打印,甚至比目前的结果更糟糕。
答案 0 :(得分:4)
您正在混合代码中的制表符和空格。 不要这样做。您的编辑器设置为将标签扩展为4个空格,而Python将标签扩展为 8个空格。对于你的代码,有些行只使用制表符,有些行只使用空格,有些行看起来像 mix 制表符和空格,就Python而言,这导致了一组完全不同的缩进块
else
分支缩进以匹配 for
循环,而不是if
测试。这意味着else
块始终在没有for
语句的情况下完成break
循环时运行,而不是在if
测试失败时运行。
将您的编辑器配置为在缩进时仅使用空格,并将所有选项卡替换为4个空格,并且您的代码将正常工作。