Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我需要关于“其他”块的建议_Python - Fatal编程技术网

Python 我需要关于“其他”块的建议

Python 我需要关于“其他”块的建议,python,Python,为什么else语句在这里打印 for elem in data: if choose_id == elem['id']: print(f"{elem['ip']} : {elem['id']}") else: print("No ID found") 输出为: ID to search > 6 10.xx.xxx.xx : 6 10.xx.xxx.xx : 6 10.xx.xxx.xx : 6 10.xx.xxx.xx : 6 No ID found 我

为什么else语句在这里打印

for elem in data:
    if choose_id == elem['id']:
        print(f"{elem['ip']} : {elem['id']}")
else:
    print("No ID found")
输出为:

ID to search > 6
10.xx.xxx.xx : 6
10.xx.xxx.xx : 6
10.xx.xxx.xx : 6
10.xx.xxx.xx : 6
No ID found
我尝试在if块中加入一个'break'语句,但它只迭代一次

非常感谢您的建议。

对于您的情况,for..else语句没有帮助,因为您希望在任何情况下遍历整个列表,而else部分将在之后运行。我认为,最简单的方法是找到一个变量,如下所示:

found = False
for elem in data:
    if choose_id == elem['id']:
        found = True
        print(f"{elem['ip']} : {elem['id']}")

if not found:
    print("No ID found")

Else被打印是因为它没有缩进-它是for/Else,而不是if/Else.In for。。。else语句else part在循环结束而不中断时运行,因此这正是此处发生的情况。@h4z3我最初将其缩进,但它只为每个循环打印“找不到id”element@bereal中断应该放在哪里?@Posteingang在您的案例中,中断没有帮助,因为您希望迭代到最后。我认为,您需要一个变量found=False,一旦有匹配项,该变量就被设置为True,如果没有匹配项,最后打印消息。您如何知道他们想要迭代到列表的末尾?如果一个条款得到满足,也许他们可以在一个之后分手sucesfully@Chris_Rands我从语句中了解到,我曾尝试在if块中放入一个“break”语句,但它只迭代一次,而且id在它们的输出中似乎是非唯一的。这很有效。我从未想过使用find=True/False。很高兴这个重新打开,非常感谢。