为什么即使"Else"语句在嵌套的 for 循环中为 true "IF"仍然打印语句



为什么我的"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 个空格,您的代码将正常工作。

最新更新