Python 我需要关于“其他”块的建议
为什么else语句在这里打印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 我
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。很高兴这个重新打开,非常感谢。